GNU/Linux >> Linux Esercitazione >  >> Linux

Debug remoto di un processo Linux da Windows con gdb e gdbserver:cosa serve esattamente sul lato Windows?

Basta ricostruire gdb con il supporto della piattaforma di destinazione. Puoi usare Cygwin per questo. Esempio per la piattaforma di destinazione RHEL:

> wget http://ftp.gnu.org/gnu/gdb/gdb-<ver>.tar.xz
> tar -xJvf gdb-<ver>.tar.xz
> mkdir -p gdb-<ver>/build/x86_64-redhat-linux-gnu
> cd gdb-<ver>/build/x86_64-redhat-linux-gnu
> ../../configure --target=x86_64-redhat-linux-gnu
> make && make install
> x86_64-redhat-linux-gnu-gdb.exe --version

Non dimenticare di riconfigurare la tua toolchain dopo questo. Per ottenere il nome della configurazione di destinazione, puoi usare:

> echo ${BASH_VERSINFO[5]}

Ora c'è un pluginhttp://marketplace.eclipse.org/content/direct-remote-c-debugging

Che ti consente di avviare gdb sul server in remoto tramite ssh. Si occupa della mappatura dei percorsi e di altre cose.

Non è necessario che il server gdb sia eseguito in remoto


Non sono riuscito a creare su Windows, ma ho trovato abbastanza facile crearlo sotto Linux. Per riassumere e completare la risposta di @Eugene:Per prima cosa, prepara le fonti:

wget http://ftp.gnu.org/gnu/gdb/gdb-<ver>.tar.xz
tar -xJvf gdb-<ver>.tar.xz
mkdir -p gdb-<ver>/build/x86_64-redhat-linux-gnu
cd gdb-<ver>/build/x86_64-redhat-linux-gnu

Scarica il compilatore Windows:

sudo apt-get install mingw-w64

Controlla la piattaforma di configurazione di destinazione su cui desideri eseguire il debug dei tuoi file binari (cosa inserire nel parametro --target):

echo ${BASH_VERSINFO[5]}

Prepara i makefile mirati per la piattaforma desiderata ma in esecuzione su un host diverso. Lo compiliamo in modo statico in modo che non dipenda da alcuna DLL o altre librerie. Disabilitiamo anche la creazione di altri binari come suggerisce il wiki di gdb:

../../configure --host=x86_64-w64-mingw32 --target=x86_64-pc-linux-gnu --enable-static=yes --disable-interprocess-agent --disable-binutils --disable-ld --disable-gold --disable-gas --disable-sim --disable-gprof

infine, crea (richiede circa 30-60 minuti):

make LDFLAGS=-static

Puoi trovare il tuo debugger nella cartella gdb. È anche utile rimuoverlo dai simboli di debug poiché dopo la creazione dell'eseguibile è enorme:

strip -s gdb/gdb.exe

Ecco! gdb.exe pronto per essere eseguito in Windows ed eseguire il debug remoto degli eseguibili Linux!


Linux
  1. Qual è l'attuale sorgente del kernel Linux?

  2. Determina la versione del sistema operativo, Linux e Windows da Powershell

  3. Quali sono le differenze tra i file .txt Linux e Windows (codifica Unicode)

  4. Qual è l'equivalente di ~ (tilde) di Linux in Windows?

  5. Qual è la definizione di una sessione in Linux?

Monitoraggio degli host Linux e Windows con Sguardi

Flatpak su Linux:cos'è e come installare app con esso

Installa Linux Mint con Windows 8 | Dual Boot Windows 8 e Linux Mint 12

Qual è la differenza tra Linux e Unix?

Scrittura e debug di applicazioni C++ Linux da Visual Studio usando il sottosistema Windows per Linux

Qual è l'equivalente Linux dell'avvio di Windows?