Jag är för närvarande fast vid problem med fjärrfelsökning av min applikation med gdb. Jag skulle vilja ha förmåga att ansluta till en fjärrprocess och använda IDE ”s visuella felsökning (jag använder Visual Studio Code).

problemet är IDE kan kopplas till en lokal process med sin pid vilket inte är riktigt användbart. Så om jag begär lokal port vidarebefordran kan jag använda den lokala porten för att vidarebefordra anslutningen som inte är vad jag vill.

Är det möjligt att göra något som ”pid-vidarebefordran” dvs jag ställer in några div id = ”fac3326e75″>

vilket egentligen är en fjärrprocess.

Kommentarer

  • Du ' berättar inte vad IDE använder (och eftersom jag ' inte använder någon IDE skulle jag förmodligen inte ' t vara kan hjälpa dig). Men du bör titta på gdbserver – det ' är ett litet program som kan köras på ett inbäddat / begränsat system, och du kan ansluta till det med ' fet debugger ' från en kraftfullare maskin.
  • @UncleBilly gjorde jag. " Jag använder Visual Studio-kod ". Tyvärr är det dokumenterat att det inte stöder fjärrfelsökning …
  • @UncleBilly gdbserver låter som om det är vad jag ville ha. Tack.

Svar

Som Farbror Billy säger, ett trevligt sätt att göra detta är att använda GDB: s fjärrfelsökningsfunktioner. Detta fungerar genom att köra en “liten” felsökare på värden som kör processen du vill felsöka och ansluta till den med gdb från värden som kör din utvecklingsmiljö. Eftersom många IDE: er (inklusive VS-kod) stöder felsökning med gdb, kan du dra nytta av din utvecklingsmiljö inriktad på processer som körs var som helst, inklusive på andra plattformar.

På värden som kör processen som du vill felsöka måste du installera gdbserver (ofta genom att kopiera en statisk binär) och köra den; till exempel:

gdbserver --attach :9953 ${pid} 

listas på port 9953 och bifogas till det angivna process-id. Du kan ange olika sätt att ansluta till servern (seriella portar, IP-adresser …), och antingen köra ett kommando för felsökning, eller koppla till en pågående process, eller till och med köra en ”felsökningsserver” utan någon specifik process .

På värden med din utvecklingsmiljö ansluter du till målet inom gdb:

$ gdb ... (gdb) target remote <IP address>:9953 

Allt annat fungerar som vanligt. gdb överför filer som behövs (bibliotek etc.) från fjärrmålet, men för att snabba upp saker kan du peka på en lokal kopia av filerna. Det kommer att använda lokala källor.

Detta fungerar som du förväntar dig när de två värdarna är desamma, men det kan också fås att fungera med olika värdar, t.ex. för att felsöka ett Windows-program från ett Linux-system, eller mer typiskt, ett program som körs på ett litet inbäddat system från en större utvecklingsplattform.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *