gdb调试步骤
-
编译程序时包含调试信息:
在编译你的程序时,确保使用
-g标志以包含调试信息。g++ -g source_code.cpp -o program -
启动 GDB:
在终端中,使用
gdb命令启动 GDBgdb program -
设置断点:
使用
break或者b命令设置断点(gdb) b function #指定函数设置断点 (gdb) b filename.cpp:line_number #指定行设置断点 (gdb) b &变量名 #指定变量的地址处设置断点,断点触发后,可以结合print查看变量信息 -
运行程序:
使用
run命令启动程序(gdb) run -
单步执行:
使用
step和next命令来逐行单步执行代码(gdb) step #进入函数内部 (gdb) next #一步完成函数调用 (gdb) continue #恢复程序运行 -
查看变量:
使用
print命令来查看变量的值(gdb) print variable_name (gdb) print expression -
查看堆栈跟踪:
使用
bt命令来查看当前的调用堆栈,这将显示函数的调用关系。(gdb) bt -
设置条件断点:
使用
break if命令可以在满足特定条件时触发断点。(gdb) b your_function if condition 如:b main.cpp:127 if cnt==10 -
删除断点:
使用
delete命令来删除不再需要的断点。(gdb) d breakpoint_number #删除指定编号断点 (gdb) clear #删除程序中所有断点 (gdb) clear 行号 #删除此行断点 (gdb) clear 函数名 #删除函数中所有断点 (gdb) disable #让某个断点暂时失效 -
继续执行:
使用
continue命令来让程序继续执行,直到下一个断点或程序结束。(gdb) continue -
退出 GDB:
当你完成调试时,可以使用
quit命令退出 GDB。(gdb) quit
补充:gdb监视
(gdb) watch *地址 #当该地址发生变化时触发断点
(gdb) watch var #当var值发生变化时触发断点
(gdb) watch (condition) #当条件符合时触发断点
list查看源代码
(gdb) list 文件名:行号 #查看指定文件的特定行号源代码
(gdb) list function #查看函数源代码
本文来自博客园,作者:{Ray963},转载请注明原文链接:{https://www.cnblogs.com/ray93/}

浙公网安备 33010602011771号