百科:
UNIX及UNIX-like下的调试工具;图形界面方式的:VC、BCB等IDE的调试
功能:
1.启动程序,按照自己的意愿控制程序;
2.设置断点,在断点处停止程序;
3.程序被停止时可以检查程序中发生的事
4.从而修复程序,查找其它BUG;
使用GDB:
主要用来调试c/c++程序,我们需要将调试信息加载到可执行文件中去,如:g++/gcc -g xxx.c -o xxx -lpthread(线程)
没有-g参数,我们将找不到程序的函数名、变量名,所代替的全是运行时的内存地址;
相关参数:
l (list) 默认列出main前后共10行的代码;(自己测试)应为第一行代码
l,num 列出num行前后共10行的代码;
l,- 列出当前代码前面的代码10行;
l,+ 列出当前代码后面的代码10行;
l a,b 列出a,b行之间的代码(包含ab);
set listsize num(自己定) 设置列出的行数;
show listsize 显示列出的行数大小
b(break) 设置断点
break line-number 使程序恰好在执行给定行之前停止;
break function-name 使程序恰好在进入指定的函数之前停止;
break line-or-function if condition 如果condition(条件)是真,程序到达指定行或函数时停止;
break routine-name 在指定例程的入口处设置断点;
info break 显示当前断点信息;
delete breakpoint 1 删除第一个断点 不带数字则删除所有断点;
disable breakpoint 1 该命令将禁止断点1,同时断点信息的 (Enb)域将变为 n;
enable breakpoint 1 该命令将允许断点1,同时断点信息的 (Enb)域将变为 y;
clear number 清楚number行代码上的断点,number 为源文件的某个代码行的行号;
r 运行程序,没有断点直接运行完毕;有断点在第一个断点处停止;
c 继续执行程序,直到下一个断点处或者程序结束;
n 执行一行代码,包含有函数也执行;不进入的单步执行
s 执行一行代码,有函数则进入函数执行;进入的单步执行,想退出该函数返回到它的调用函数中,可使用命令finish
p+变量 打印变量信息;set print element 0 设置显示打印信息全部;
set variable = value 将值赋予变量;
print variable = value or p variable = value 将值赋予变量;
whatis+变量 显示变量的类型;
两次tab键可以查看所有以xx开始的函数 eg:b *thread
bt 查看栈信息