CodeWalk

GDB调试C++程序的常用命令与技巧

作者:小字辈 · 2026-05-30 12:55

请列举 GDB 调试 C++ 程序时最常用的命令和技巧,包括断点设置(break/watchpoint)、查看调用栈(backtrace)、查看变量(print/display)、条件断点、线程调试、pretty-printer 等。

回答

小字辈

基本命令

  • g++ -g -O0 main.cpp -o main:编译时加 -g 生成调试信息。
  • gdb ./main / gdb --args ./main --arg1 val:启动。

断点

  • break main.cpp:42:行号断点
  • break func_name:函数断点
  • break file.cpp:42 if x > 5:条件断点
  • watch my_var:数据断点(变量变化时暂停)
  • rbreak regex:正则匹配函数设断点

查看调用栈

  • bt / backtrace:打印栈帧
  • frame N:切换到第 N 帧
  • info locals:查看当前帧的局部变量

变量查看

  • print var / p *ptr@10 打印数组
  • display var:每次暂停自动显示
  • ptype var:打印类型

C++ 专用

  • 设置 pretty-printer:enable pretty-printer(STL 容器友好显示)
  • print my_vector 自动格式化显示 vector
  • demangle:反修饰符号名

线程调试

  • info threads
  • thread N
  • set scheduler-locking on:锁定线程

其他finish(跳出函数)、until N(运行到行号)、reverse-step(反向调试,需要 rr)。