linux命令之gdb

来源:互联网 发布:淘宝互刷代付骗局 编辑:程序博客网 时间:2024/06/05 21:14

注:Linux下输入 * 号时,前面需要加\(转义符),即\*。因为Linux下的*代表所有文件。

启动gdb           - gdb 程序名 [corefile]

corefile是可选的,但能增强gdb的调试能力。

Linux默认是不生成corefile文件的,所以需要在.bashrc文件中添加

ulimit –c unlimited(修改.bashrc文件后记得 . .bashrc 让修改生效)

 

为了能调试程序,makefile文件中,.c.o标号下需写为:(加上-g)

.c.o:

       $(CC) -Wall -g -o $@ -c $<


如上图所示,make 编译链接,运行可执行文件时出错,此时发现多了core.5691文件,只能用gdb打开,gdb靠core文件提示你程序哪里出错。若用gdb –q mycal core.5691,即中间加上-q,可去除gdb版本号等信息。

或者可以先用gdb运行程序,再用run命令:

gdb mycal -q

run

run之后:

where           只显示出错的行的代码

list                 显示出错的代码的上下十行内的代码,list也可以带参数

print i             显示变量i的值

break             设置断点

break linenum                       在某一行设置断点

break funcname                    在某个函数设置断点

break filename:linenum       在其他文件中某行设置断点

break filename:funcname   在其他文件中某函数设置断点

  注:可以设置多个断点,info break 查看有多少断点,delete 删除一个断点

continue   从断点以后继续执行

 

改变一个变量的值

set variablevarname = value,varname是变量的名称,value是变量的新值。

即用以上命令使得动态改变变量的值。

 

单步调试

step命令:                每次执行一条语句,相当于step into

next命令:                当遇到一个函数,next将执行整个函数,相当于step over

return [value]命令:停止执行当前函数,相当于step return

注:gdb记住了最后一个被执行的命令,因此若需要重复执行某条命令,不需要每次都键入命令。


0 0
原创粉丝点击