调试 bug 基本思想是“分析现象 --> 假设错误原因 --> 产生新的现象去验证假设”这样一个循环, 重要的是严密的分析和思考 。
gdb 只是一个辅助工具 。
1.gdb 基础命令
"-g" 选项作用:目标文件带 gdb 所需的调试信息;并不把源代码嵌入到目标文件中,而是在调试目标文件时去读所需的源文件。
gcc test.c -g -o test
gdb ./test
start: 开始运行,或重新执行程序到 main 函数停下;
quit:退出 gdb
2. 断点类命令
执行到某一行,停下
display var: 每次断点停下,都显示 var 的值;
3. 设置观察点
watch var: 设置 var 为观察点,每次访问到该变量,程序暂停;
x/7b:打印存储器中的内容。7b 是打印格式,b 表示每个字节一组,7 表示打印 7 组。
4. 段错误
一条规律,如果某个函数中发生访问越界,很可能并不立即产生段错误,而在函数返回时却产生段错误。
正文完