gdb:调试器
功能:调试一个程序的运行过程,查看程序出问题的位置
Linux下gcc编译器默认生成release版本程序,不带有调试符号信息,意味着程序无法被调试。
所以程序调试的前提就是编译生产debug版本程序,因此编译程序时需要加上gcc -g
选项, 开启调试,向程序中添加调试符号信息。
调试命令
- gdb binFile 退出: ctrl + d 或 quit
开始调试命令:
- run/r :程序直接开始运行 ;
- start :开始逐步调试
调试的流程控制命令:
- list :查看指定文件指定行附近的代码 list filename:line
- next/n 下一步:并不跟踪进入函数
- step/s 下一步:跟踪进入函数
- until 直接运行到指定文件的指定行 until filename:line
- continue 从当前位置继续运行
断点相关命令:
- break:打断点
- break filename:line(给指定文件指定行打断点)
- break function_name(将断点打到函数的首行)
- info break 查看断点信息
- delete: 删除断点
- watch: 变量监控,当变量内容发生变化则停下来 watch varible name
其他命令:
查看程序运行信息中的函数调用栈
backtrace: 查看程序运行的调用栈信息–定位程序崩溃位置
因为程序崩溃后,栈顶函数就是出问题的函数
- backtrace(或bt):查看各级函数调用及参数
- list/l line 查看指定行(默认当前调试行)附近代码
- finish:执行到当前函数返回,然后挺下来等待命令
- print( p ):打印表达式的值,通过表达式可以修改变量的值或者调用函数 p 变量;打印变量值。
- set var:修改变量的值
- display 变量名:跟踪查看一个变量,每次停下来都显示它的值
- undisplay:取消对先前设置的那些变量的跟踪
如有不同见解,欢迎留言讨论~~