GDB调试C++程序的常用命令与技巧
请列举 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自动格式化显示 vectordemangle:反修饰符号名
线程调试:
info threadsthread Nset scheduler-locking on:锁定线程
其他:finish(跳出函数)、until N(运行到行号)、reverse-step(反向调试,需要 rr)。