>  기사  >  백엔드 개발  >  크로스 플랫폼 C++ 프로그램을 디버깅하는 방법은 무엇입니까?

크로스 플랫폼 C++ 프로그램을 디버깅하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-06-04 21:01:081043검색

크로스 플랫폼 C++ 프로그램을 디버깅하려면 GDB 원격 디버깅 또는 LLDB 원격 디버깅을 사용할 수 있습니다. GDB 원격 디버깅: 대상 시스템에 GDB 서버를 설치하고 대상 프로그램을 컴파일합니다. 디버깅을 위해 호스트 시스템에서 GDB를 사용하여 대상 서버에 연결합니다. LLDB 원격 디버깅: 호스트 시스템에 LLDB를 설치하고 대상 프로그램을 컴파일합니다. 대상 시스템에서 LLDB 서버를 시작하고 디버깅을 위해 호스트 시스템에 연결합니다.

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

크로스 플랫폼 C++ 프로그램을 디버깅하는 방법은 무엇입니까?

소개

크로스 플랫폼 C++ 프로그램 디버깅은 다양한 운영 체제 및 컴파일러에서 실행될 수 있기 때문에 어려울 수 있습니다. 이 내용은 GDB 원격 디버깅과 LLDB 원격 디버깅을 사용하여 크로스 플랫폼 C++ 프로그램을 디버깅하는 방법에 대한 가이드를 제공합니다.

GDB 원격 디버깅

  1. GDB 서버 설치: 대상 시스템에 GDB 서버(gdbserver)를 설치합니다. 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. 대상 프로그램 컴파일: -g-gdwarf=2와 같은 GDB 호환 플래그를 사용하여 대상 프로그램을 컴파일합니다.
GDB 서버 시작:

대상 시스템에서 gdbserver :portnumber target 실행 파일을 실행합니다. 여기서 portnumber는 사용되지 않은 포트입니다.

원격 연결:

호스트 시스템에서 gdb 도구를 사용하여 대상 서버에 원격으로 연결합니다: (gdb) target remote :localhost:port number.

디버깅:
    이제 호스트 시스템에서 대상 프로그램을 원격으로 디버깅할 수 있습니다.
    LLDB 원격 디버깅
  • LLDB 설치:
  • 호스트 시스템에 LLDB 디버거를 설치합니다.
  • 대상 프로그램 컴파일:
  • -g-fvisibility=hidden과 같은 LLDB 호환 플래그를 사용하여 대상 프로그램을 컴파일합니다.
  • LLDB 서버 시작:
  • 대상 시스템에서 lldb-server platform --listen :port number :program path를 실행하세요.

원격 연결: 호스트 시스템에서 lldb를 실행하고 대상 서버에 원격으로 연결합니다: (lldb) 플랫폼 연결 connect://localhost:port number.

  • 디버깅:
  • 이제 호스트 시스템에서 대상 프로그램을 원격으로 디버깅할 수 있습니다.
  • 실용 사례
  • GDB를 사용하여 간단한 크로스 플랫폼 프로그램을 원격으로 디버깅:
  • Target.cpp 소스 코드:
    #include <iostream>
    
    int main() {
      std::cout << "Hello from Target!" << std::endl;
      return 0;
    }
  • Target.cpp 컴파일:
🎜
g++ -g -gdwarf=2 Target.cpp -o Target
🎜 🎜GDB 시작 서버: 🎜🎜
gdbserver :1234 Target
🎜🎜 서버에 원격으로 연결: 🎜🎜
gdb
(gdb) target remote localhost:1234
🎜🎜 중단점 설정 및 디버그: 🎜🎜
(gdb) break main
(gdb) run
🎜🎜 LLDB를 사용하여 간단한 크로스 플랫폼 프로그램 원격 디버그: 🎜🎜🎜🎜Target.cpp 소스 코드: 🎜 🎜
#include <iostream>

int main() {
  std::cout << "Hello from Target!" << std::endl;
  return 0;
}
🎜🎜Target.cpp 컴파일: 🎜🎜
clang++ -g -fvisibility=hidden Target.cpp -o Target
🎜🎜LLDB 서버 시작: 🎜🎜
lldb-server platform --listen :1234 ./Target
🎜🎜원격으로 서버에 연결: 🎜🎜
lldb
(lldb) platform connect connect://localhost:1234
🎜🎜중단점 설정 및 디버그: 🎜🎜
(lldb) breakpoint set -n main
(lldb) run

위 내용은 크로스 플랫폼 C++ 프로그램을 디버깅하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.