Linux调试器gdb
注意:
- gcc/g++编译出来的二进制程序,默认是release版本的,没有调试信息。
- 要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项,产生调试信息。
- 使用gdb调试的程序一定是运行时错误,语法错误会在编译时候报错
gdb的使用
与VS中的调试代码对应:
- gdb 可执行文件 开始调试
- Ctrl+d或者q 退出gdb
- l/list 显示源代码,每次列10列(VS中可以直接看到)
- l/list 函数名 显示函数的源代码(VS中可以直接看到)
- r/run 连续运行程序不是单步(对应VS中的F5)
- n/next 单条执行(对应VS中的F10逐过程)
- s/step 进入函数调用(对应VS中F11逐语句)
- b/break 行号 在某行设置断点(对应VS中的F9)
- b/break 函数名 在某函数开头设置断点(对应VS中的F9)
- info b/break 查看断点信息(右击断点查看断点信息)
- finish 执行当前函数返回,停下来等待命令
- p 变量 打印变量的值(对应VS中监视中输入变量查看值)
- print(表达式) 打印表达式的值(对应VS中监视中输入表达式查看值)
- set var 修改变量的值
- c/continue 从当前位置连续而非单步执行程序(对应VS中从当前断点跳到下一个断点F5)
- d/delete breakpoints 删除所有断点
- d/delete 断点编号 删除某个断点(对应VS中F9)
- disable 断点编号 禁用某个断点
- enable 断点编号 启用某个断点
- display 变量名 让某个变量常显示(对应VS中监视中输入变量查看值)
- undisplay 取消常显示
- until 行号 跳至某行
- bt/breaktrac 查看各级函数调用及参数
- info locals 查看当前栈帧局部变量
参考文献: