Maison  >  Article  >  développement back-end  >  Comment déboguer des programmes C++ multiplateformes ?

Comment déboguer des programmes C++ multiplateformes ?

WBOY
WBOYoriginal
2024-06-04 21:01:08993parcourir

Pour déboguer des programmes C++ multiplateformes, vous pouvez utiliser le débogage à distance GDB ou le débogage à distance LLDB : Débogage à distance GDB : installez le serveur GDB sur le système cible et compilez le programme cible. Utilisez GDB sur le système hôte pour vous connecter au serveur cible pour le débogage. Débogage à distance LLDB : installez LLDB sur le système hôte et compilez le programme cible. Démarrez le serveur LLDB sur le système cible et connectez-vous au système hôte pour le débogage.

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

Comment déboguer des programmes C++ multiplateformes ?

Introduction

Le débogage de programmes C++ multiplateformes peut être difficile car ils peuvent s'exécuter sur différents systèmes d'exploitation et compilateurs. Cet article fournit un guide pour déboguer les programmes C++ multiplateformes à l'aide du débogage à distance GDB et du débogage à distance LLDB.

Débogage à distance GDB

  1. Installation du serveur GDB : Installez le serveur GDB (gdbserver) sur le système cible. 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. Compilation du programme cible : Compilez le programme cible en utilisant les indicateurs compatibles GDB, tels que -g et -gdwarf=2.
Démarrez le serveur GDB :

Sur le système cible, exécutez gdbserver :portnumber target executable, où portnumber est tout port inutilisé.

Pièce jointe à distance :

Sur le système hôte, utilisez l'outil gdb et attachez-vous à distance au serveur cible : (gdb) target remote :localhost:port number.

Débogage :
    Il est désormais possible de déboguer à distance le programme cible sur le système hôte.
    Débogage à distance LLDB
  • Installation LLDB :
  • Installez le débogueur LLDB sur le système hôte.
  • Compilation du programme cible :
  • Compilez le programme cible à l'aide d'indicateurs compatibles LLDB, tels que -g et -fvisibility=hidden.
  • Démarrage du serveur LLDB :
  • Sur le système cible, exécutez lldb-server platform --listen :port number :program path.

Connexion à distance : Sur le système hôte, exécutez lldb et connectez-vous à distance au serveur cible : (lldb) platform connect connect://localhost:port number.

  • Débogage :
  • Il est désormais possible de déboguer à distance le programme cible sur le système hôte.
  • Cas pratique
  • Utiliser GDB pour déboguer à distance un simple programme multiplateforme :
  • Target.cpp Code source :
    #include <iostream>
    
    int main() {
      std::cout << "Hello from Target!" << std::endl;
      return 0;
    }
  • Compiler Target.cpp :
🎜
g++ -g -gdwarf=2 Target.cpp -o Target
🎜🎜Démarrer G DB serveur : 🎜🎜
gdbserver :1234 Target
🎜🎜 Attacher au serveur à distance : 🎜🎜
gdb
(gdb) target remote localhost:1234
🎜🎜 Définir les points d'arrêt et déboguer : 🎜🎜
(gdb) break main
(gdb) run
🎜🎜 Déboguer à distance un programme multiplateforme simple utilisant LLDB : 🎜🎜🎜🎜Target.cpp Code source : 🎜 🎜
#include <iostream>

int main() {
  std::cout << "Hello from Target!" << std::endl;
  return 0;
}
🎜🎜Compilez Target.cpp : 🎜🎜
clang++ -g -fvisibility=hidden Target.cpp -o Target
🎜🎜Démarrez le serveur LLDB : 🎜🎜
lldb-server platform --listen :1234 ./Target
🎜🎜Connectez-vous au serveur à distance : 🎜🎜
lldb
(lldb) platform connect connect://localhost:1234
🎜🎜Définissez les points d'arrêt et déboguez 🎜🎜rrre : ee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn