插件窝 干货文章 C++在Linux下如何调试程序

C++在Linux下如何调试程序

调试 program your 720    来源:    2025-05-09

C++在Linux下的调试方法

在Linux环境下调试C++程序有多种工具和方法,以下是主要的调试技术和工具:

1. GDB (GNU Debugger)

GDB是最常用的Linux下C++调试工具。

基本使用

# 编译时加入调试信息
g++ -g your_program.cpp -o your_program

# 启动GDB
gdb ./your_program

常用GDB命令

命令 功能
break [file:]line/func 设置断点
run [args] 运行程序
next (n) 单步执行(不进入函数)
step (s) 单步执行(进入函数)
continue (c) 继续执行到下一个断点
print var (p) 打印变量值
backtrace (bt) 查看调用栈
info locals 显示当前局部变量
watch var 设置观察点
quit (q) 退出GDB

2. LLDB (LLVM Debugger)

LLDB是LLVM项目的一部分,功能与GDB类似但有一些现代特性。

# 安装LLDB
sudo apt-get install lldb  # Ubuntu/Debian

# 使用
lldb ./your_program

3. 图形化调试工具

3.1 Eclipse CDT

Eclipse提供了集成的C/C++开发环境,包含图形化调试界面。

3.2 Qt Creator

即使不是Qt项目,Qt Creator也提供了优秀的C++调试功能。

3.3 Visual Studio Code

配置VS Code的C++插件后,可以设置断点和可视化调试。

4. 内存调试工具

4.1 Valgrind

检测内存泄漏和内存错误:

valgrind --leak-check=full ./your_program

4.2 AddressSanitizer (ASan)

GCC/Clang内置的内存错误检测工具:

g++ -fsanitize=address -g your_program.cpp -o your_program

5. 性能分析工具

5.1 gprof

g++ -pg your_program.cpp -o your_program
./your_program
gprof ./your_program gmon.out > analysis.txt

5.2 perf

Linux内核提供的性能分析工具:

perf record ./your_program
perf report

6. 核心转储分析

当程序崩溃时,可以分析核心转储文件:

# 启用核心转储
ulimit -c unlimited

# 程序崩溃后
gdb ./your_program core

7. 调试技巧

  1. 条件断点break if condition
  2. 临时断点tbreak
  3. 多线程调试info threads, thread n
  4. 反汇编disassemble
  5. 修改变量值set var = value

8. 日志调试

对于复杂问题,结合日志输出和调试器:

#include <iostream>
#define DEBUG_LOG(x) std::cerr << #x << " = " << (x) << std::endl

掌握这些工具和技术可以大大提高在Linux下调试C++程序的效率。