GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Remote-Debuggen eines Linux-Prozesses von Windows mit gdb und gdbserver:Was genau wird auf der Windows-Seite benötigt?

Erstellen Sie einfach gdb mit Unterstützung der Zielplattform neu. Sie können dafür Cygwin verwenden. Beispiel für eine RHEL-Zielplattform:

> 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

Vergessen Sie nicht, danach Ihre Toolchain neu zu konfigurieren. Um den Zielkonfigurationsnamen zu erhalten, können Sie Folgendes verwenden:

> echo ${BASH_VERSINFO[5]}

Jetzt gibt es ein Plugin http://marketplace.eclipse.org/content/direct-remote-c-debugging

Damit können Sie gdb auf dem Server remote über ssh starten. Es kümmert sich um die Pfadzuordnung und andere Dinge.

Sie müssen den gdb-Server nicht remote ausführen


Ich konnte es nicht unter Windows bauen, fand es aber ziemlich einfach, es unter Linux zu bauen. Um die @Eugene-Antwort zusammenzufassen und zu vervollständigen:Bereiten Sie zuerst die Quellen vor:

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

Windows-Compiler herunterladen:

sudo apt-get install mingw-w64

Überprüfen Sie die Zielkonfigurationsplattform, auf der Sie Ihre Binärdateien debuggen möchten (was Sie in den --target-Parameter eingeben müssen):

echo ${BASH_VERSINFO[5]}

Bereiten Sie Makefiles vor, die auf Ihre gewünschte Plattform ausgerichtet sind, aber auf einem anderen Host ausgeführt werden. Wir kompilieren es statisch, damit es nicht von DLLs oder anderen Bibliotheken abhängt. Außerdem deaktivieren wir das Erstellen anderer Binärdateien, wie das GDB-Wiki vorschlägt:

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

schließlich bauen (dauert etwa 30-60 min):

make LDFLAGS=-static

Sie finden Ihren Debugger im gdb-Ordner. Es ist auch gut, Debugging-Symbole zu entfernen, da das Erstellen einer ausführbaren Datei riesig ist:

strip -s gdb/gdb.exe

Voila! gdb.exe kann unter Windows ausgeführt werden und ausführbare Linux-Dateien remote debuggen!


Linux
  1. Überwachen Sie Befehle und Aufgaben mit dem Linux-Überwachungsbefehl

  2. Lesen und schreiben Sie Daten von überall mit Umleitung im Linux-Terminal

  3. Flatpak unter Linux:Was es ist und wie man Apps damit installiert

  4. Was ist der beste VPS:Windows oder Linux?

  5. Gibt es einen Linux-Befehl, um die Fenster-IDs zu bestimmen, die einer bestimmten Prozess-ID zugeordnet sind?

Überwachung von Linux- und Windows-Hosts mit Glances

Installieren Sie Linux Mint mit Windows 8 | Dual-Boot-Windows 8 und Linux Mint 12

Was ist der Unterschied zwischen Linux und Unix?

Schreiben und Debuggen von Linux-C++-Anwendungen aus Visual Studio mit dem Windows-Subsystem für Linux

Was sind die Unterschiede zwischen Linux- und Windows-.txt-Dateien (Unicode-Codierung)

Was ist die Definition einer Sitzung unter Linux?