网站整合营销建设,做谷歌推广对网站的要求,关键词林俊杰百度云,网站建设加盟1.前言 GDB是Linux下非常好用且强大的调试工具。GDB可以调试C、C、Go、java、 objective-c、PHP等语言。对于一名Linux下工作的c/c程序员#xff0c;GDB是必不可少的工具 2.GDB使用帮助
GDB命令拥有较多内部命令。在gdb命令提示符下输入help可以查看所有内部命令及使用说明
…1.前言 GDB是Linux下非常好用且强大的调试工具。GDB可以调试C、C、Go、java、 objective-c、PHP等语言。对于一名Linux下工作的c/c程序员GDB是必不可少的工具 2.GDB使用帮助
GDB命令拥有较多内部命令。在gdb命令提示符下输入help可以查看所有内部命令及使用说明
3.使用GDB前注意文件是否带有调试信息
判断文件是否带有调试信息要调试C/C的程序首先在编译时要使用gdb调试程序在使用gcc编译源代码时必须加上-g参数。保留调试信息否则不能使用GDB进行调试。
当你有一个编译好的二进制文件你不确定是否带有调试信息这个时候你可以使用如下的命令验证
gdb 二进制文件名
如果没有调试信息则会出现该二进制文件地址提示无调试信息 Reading symbols from /home/ordinary/code/c/test...(no debugging symbols found)...done.
如果有调试信息则会出现二进制文件地址 Reading symbols from /home/ordinary/code/c/test...done.
4.使用GDB 启动gdbgdb program启动gdb并加载指定的可执行文件programgdb program core启动gdb并加载指定的可执行文件program和核心转储文件core用于分析程序崩溃时的状态gdb program pid启动gdb并加载指定的可执行文件program和进程号为pid的正在运行的进程用于动态调试 退出gdb
quit或q 设置断点break location 或 b location在指定的位置设置一个断点可以是函数名、文件名:行号、或者内存地址。例如 break main在main函数的开始处设置断点break test.c:10在test.c文件的第10行设置断点break *0x80483f4在地址0x80483f4处设置断点 删除指定编号的断点
delete number 或 d number 查看断点编号
info break或i b 禁用断点
disable number 启用断点
enable number list 行号或者函数名 或 l 行号或者函数名
调试阶段查看代码 run arguments 或 r arguments
运行或重新运行程序并传递指定的参数。如果设置了断点程序会在遇到断点时暂停并显示当前的源代码和寄存器值。 next或n
F10执行当前行并跳到下一行。如果当前行是一个函数调用next会直接执行整个函数并不进入函数内部 step或s
F11执行当前行并跳到下一行。如果当前行是一个函数调用step会进入函数内部并停在第一行 continue或c
继续执行程序直到遇到下一个断点或者程序结束 finish或f
运行所在函数后停下来 until
跳转至指定行 print expression 或 p expression
打印某个变量或者表达式的值。可以使用任何合法的C语言表达式包括宏、指针、结构体等
例如 print x打印变量x的值print *p打印指针p所指向的值。print foo(x)打印调用foo函数并传递x作为参数后的返回值。 常显示某个变量的地址或者值
display 取消常显示某个变量的地址或者值
undisplay number 修改某个变量或者表达式的值。可以使用任何合法的C语言表达式包括宏、指针、结构体等
set expression
例如 set x 10修改变量x的值为10。set *p 20修改指针p所指向的值为20。set foo(x) 30修改调用foo函数并传递x作为参数后的返回值为30。info registers或i r显示所有寄存器的值。