调试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.段错误
一条规律,如果某个函数中发生访问越界,很可能并不立即产生段错误,而在函数返回时却产生段错误。
正文完