注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

旷世的忧伤

不与夏虫语寒,不与曲人语道,因为生命缺乏言说的条件......

 
 
 

日志

 
 

GDB的使用简介  

2015-01-13 14:38:31|  分类: Unix环境编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
首先最重要的是使用编译器的 “-g“选项来编译程序,这样可执行程序才能通过GDB来运行。通过下列语句开始调试:

$ gdb -tui [可执行程序名]

使用”-tui“选项可以将代码显示在一个漂亮的交互式窗口内(所以被称为“文本用户界面 TUI”),在这个窗口内可以使用光标来操控,同时在下面的GDB shell中输入命令。

示例程序:

#include <stdio.h>

int main(void)
{
int i;
int a = 0, b = 0, c = 0;
double d;

for (i = 0; i < 100; i ++)
{
a++;
if (i > 97)
d = i / 2.0;
b++;
}

return 0;
}

一、设置变量:
set var [变量] = [新的值]
这样会覆盖变量的值。不过需要注意,不能创建一个新的变量或改变变量的类型。在程序还未运行之前,可以用 set args ... 设置命令参数

二、设置断点:
1. break [行号]
2. break [函数名]
3. 设置条件断点:    break [行号] if [条件]
例如,在示例代码中,可以设置如下:

break 11 if i >97

这样,程序循环97次之后停留在“a++”语句上,避免了手动循环97次。

4. 设置观察断点:    watch [变量]
当观察的变量发生变化时,程序会被停止。
例如在示例代码中设置 watch d ,则当i>97为真时程序停止运行

三、运行程序:
r [命令行参数]

四、单步执行程序:
s(step)  --会进入函数调用内部
n(next) --不进入函数调用内部

五、打印变量:
p [变量]
这个命令可以显示特定变量的值

ptype [变量]
可以显示变量的类型

info locals
显示所有的局部变量以及其值

六、结束当前调试的程序:
k(kill)

七、从一个断点运行到另一个断点:
c(continue)  --继续执行程序

八、删除断点:
d(delete) [断点编号] --删除指定编号的断点和监视器

九、显示当前断点列表:
i breakpoint

十、调试打印时,输出完整的字符串:
set print element 0

参考资料:
http://www.linuxeden.com/html/develop/20141126/157279.html
  评论这张
 
阅读(1)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018