GNU/Linux >> Tutoriels Linux >  >> Linux

Déboguer à distance un processus Linux depuis Windows avec gdb et gdbserver :que faut-il exactement côté Windows ?

Reconstruisez simplement gdb avec la plate-forme cible prise en charge. Vous pouvez utiliser Cygwin pour cela. Exemple pour la plate-forme cible 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

N'oubliez pas de reconfigurer votre chaîne d'outils après cela. Pour obtenir le nom de la configuration cible, vous pouvez utiliser :

> echo ${BASH_VERSINFO[5]}

Il existe maintenant un pluginhttp://marketplace.eclipse.org/content/direct-remote-c-debugging

Ce qui vous permet de lancer gdb sur le serveur à distance via ssh. Il s'occupe de la cartographie des chemins et d'autres choses.

Vous n'avez pas besoin que le serveur gdb s'exécute à distance


Je n'ai pas réussi à construire sous Windows, mais j'ai trouvé assez facile de le construire sous Linux. Pour résumer et compléter la réponse d'@Eugene :Premièrement, préparez les sources :

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

Télécharger le compilateur Windows :

sudo apt-get install mingw-w64

Découvrez la plate-forme de configuration cible sur laquelle vous souhaitez déboguer vos fichiers binaires (ce qu'il faut mettre dans le paramètre --target) :

echo ${BASH_VERSINFO[5]}

Préparez des makefiles ciblés pour la plate-forme souhaitée mais exécutés sur un hôte différent. Nous le compilons de manière statique afin qu'il ne dépende d'aucune DLL ou d'autres bibliothèques. Nous désactivons également la construction d'autres fichiers binaires comme le suggère gdb wiki :

../../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

enfin, construire (prend environ 30 à 60 min) :

make LDFLAGS=-static

Vous pouvez trouver votre débogueur dans le dossier gdb. Il est également bon de le débarrasser des symboles de débogage car après la construction, l'exécutable est énorme :

strip -s gdb/gdb.exe

Voilà! gdb.exe prêt à fonctionner sous Windows et à déboguer à distance les exécutables Linux !


Linux
  1. Flatpak sur Linux :qu'est-ce que c'est et comment installer des applications avec ?

  2. Comment déboguer le noyau Linux avec GDB et QEMU ?

  3. Quels sont les appels OS/système natifs Windows et Linux effectués à partir de malloc() ?

  4. Déterminer la version du système d'exploitation, Linux et Windows à partir de Powershell

  5. Quelles sont les différences entre les fichiers Linux et Windows .txt (encodage Unicode)

Surveillance des hôtes Linux et Windows avec Glances

Quelle est la différence entre Linux et Unix ?

Écriture et débogage d'applications Linux C++ à partir de Visual Studio à l'aide du sous-système Windows pour Linux

pscp copier le fichier à distance de Windows vers Linux

Quelle est la définition d'une session sous Linux?

Quel est l'équivalent Linux du démarrage de Windows ?