GNU debugger 是GCC的调试工具。
GDB可以做哪些
1、启动程序,按照自定义的要求运行程序
2、可以设置断点,断点可以是条件断点,可以在制定的位置停住
3、当程序停止时,可以检查此时程序正在做的事情
4、动态改变程序的执行环境
GDB主要调试的是C/C++程序,在gcc编译程序后,会生成一个可执行文件,
GDB的具体操作过程
1.编译
命令 gcc -g .c -o **
-g 可以看见程序的函数名、变量名,如果没有-g,那么只能看到运行时的内存地址
2.启动调试
gdb ./.exe
**是编译出来的可执行产物
3.开始调试
调试带参数的可执行程序,需要设置参数
(gdb)set args 11 22 33 44
指令 | 描述 | 缩写 |
---|---|---|
run | 开始运行进程 | r |
continue | 继续运行程序 | c |
next | 执行当前行,如果当前包含函数调用,不会进入函数 | n |
step | 执行当前行,如果当前包含函数调用,则进入函数,执行函数体的第一条语句,如果函数是库函数或第三方提供的函数,由于没有源码也无法进入函数体 | s |
显示变量或表达式的值 | p | |
quit | 退出gdb环境 | q |
list | 显示当前行数 |
3.查看栈信息
breacktrace – bt 打印当前的函数调用栈所有信息
常用命令
指令 | 描述 | 缩写 |
---|---|---|
break | 设置断点 | b |
b fun | 在func函数入口处设置断点 | |
b filaname:linenum | 在文件制定行停住 | |
b filaname:func | 在函数func入口停住 | |
info b | 查询所有断点 | |
b main.c:10 if int x == 6 | 条件断点 | |
delete breakpoint 1 | 删除指定断点 |