Heim  >  Artikel  >  Backend-Entwicklung  >  Wie debugge ich plattformübergreifende C++-Programme?

Wie debugge ich plattformübergreifende C++-Programme?

WBOY
WBOYOriginal
2024-06-04 21:01:081058Durchsuche

Um plattformübergreifende C++-Programme zu debuggen, können Sie GDB-Remote-Debugging oder LLDB-Remote-Debugging verwenden: GDB-Remote-Debugging: Installieren Sie den GDB-Server auf dem Zielsystem und kompilieren Sie das Zielprogramm. Verwenden Sie GDB auf dem Hostsystem, um zum Debuggen eine Verbindung zum Zielserver herzustellen. LLDB-Remote-Debugging: Installieren Sie LLDB auf dem Hostsystem und kompilieren Sie das Zielprogramm. Starten Sie den LLDB-Server auf dem Zielsystem und stellen Sie zum Debuggen eine Verbindung zum Hostsystem her.

如何调试跨平台 C++ 程序?

Wie debugge ich plattformübergreifende C++-Programme?

Einführung

Das Debuggen plattformübergreifender C++-Programme kann eine Herausforderung sein, da sie auf verschiedenen Betriebssystemen und Compilern ausgeführt werden können. Dieser Artikel bietet eine Anleitung zum Debuggen plattformübergreifender C++-Programme mithilfe von GDB-Remote-Debugging und LLDB-Remote-Debugging.

GDB Remote Debugging

  1. GDB-Server-Installation: Installieren Sie den GDB-Server (gdbserver) auf dem Zielsystem. gdbserver)。
  2. 目标程序编译:使用 GDB 兼容的标志编译目标程序,例如 -g-gdwarf=2
  3. 启动 GDB 服务器:在目标系统上,运行 gdbserver :端口号 目标可执行文件,其中端口号是任意未使用的端口。
  4. 远程附加:在主机系统上,使用 gdb 工具并远程附加到目标服务器:(gdb) target remote :localhost:端口号
  5. 调试:现在可以在主机系统上对目标程序进行远程调试。

LLDB 远程调试

  1. LLDB 安装:在主机系统上安装 LLDB 调试器。
  2. 目标程序编译:使用 LLDB 兼容的标志编译目标程序,例如 -g-fvisibility=hidden
  3. LLDB 服务器启动:在目标系统上,运行 lldb-server platform --listen :端口号 :程序路径
  4. 远程连接:在主机系统上,运行 lldb 并远程连接到目标服务器:(lldb) platform connect connect://localhost:端口号
  5. Kompilierung des Zielprogramms: Kompilieren Sie das Zielprogramm mit GDB-kompatiblen Flags wie -g und -gdwarf=2.
Starten Sie den GDB-Server:

Führen Sie auf dem Zielsystem gdbserver :portnumber target executable aus, wobei portnumber ein beliebiger nicht verwendeter Port ist.

Remote-Anhang:

Verwenden Sie auf dem Hostsystem das gdb-Tool und stellen Sie eine Remote-Verbindung zum Zielserver her: (gdb) target remote :localhost:port number.

Debugging:
    Es ist jetzt möglich, das Zielprogramm auf dem Hostsystem aus der Ferne zu debuggen.
    LLDB-Remote-Debugging
  • LLDB-Installation:
  • Installieren Sie den LLDB-Debugger auf dem Hostsystem.
  • Kompilierung des Zielprogramms:
  • Kompilieren Sie das Zielprogramm mit LLDB-kompatiblen Flags wie -g und -fvisibility=hidden.
  • Start des LLDB-Servers:
  • Führen Sie auf dem Zielsystem lldb-server platform --listen :port number :program path aus.

Remote-Verbindung: Führen Sie auf dem Hostsystem lldb aus und stellen Sie eine Remote-Verbindung zum Zielserver her: (lldb) platform connect connect://localhost:port number.

  • Debugging:
  • Es ist jetzt möglich, das Zielprogramm auf dem Hostsystem aus der Ferne zu debuggen.
  • Praktischer Fall
  • Verwenden Sie GDB, um ein einfaches plattformübergreifendes Programm aus der Ferne zu debuggen:
  • Target.cpp Quellcode:
    #include <iostream>
    
    int main() {
      std::cout << "Hello from Target!" << std::endl;
      return 0;
    }
  • Kompilieren Sie Target.cpp:
🎜
g++ -g -gdwarf=2 Target.cpp -o Target
🎜🎜Starten Sie G DB Server: 🎜🎜
gdbserver :1234 Target
🎜🎜 Remote an den Server anschließen: 🎜🎜
gdb
(gdb) target remote localhost:1234
🎜🎜 Haltepunkte festlegen und debuggen: 🎜🎜
(gdb) break main
(gdb) run
🎜🎜 Remote-Debug eines einfachen plattformübergreifenden Programms mit LLDB: 🎜🎜🎜🎜Target.cpp Quellcode: 🎜 🎜
#include <iostream>

int main() {
  std::cout << "Hello from Target!" << std::endl;
  return 0;
}
🎜🎜Ziel.cpp kompilieren: 🎜🎜
clang++ -g -fvisibility=hidden Target.cpp -o Target
🎜🎜Starten Sie den LLDB-Server: 🎜🎜
lldb-server platform --listen :1234 ./Target
🎜🎜Remoteverbindung zum Server herstellen: 🎜🎜
lldb
(lldb) platform connect connect://localhost:1234
🎜🎜Haltepunkte festlegen und debuggen: 🎜🎜r reee

Das obige ist der detaillierte Inhalt vonWie debugge ich plattformübergreifende C++-Programme?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn