免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 949 | 回复: 0

gcc gdb 的使用 [复制链接]

论坛徽章:
0
发表于 2011-12-23 01:27 |显示全部楼层

Gcc常用参数:

-e

只进行预处理

-S

只编译,生成汇编代码

-c

只编译不链接,生成目标文件.o

-static

链接静态库

-g

包含调试信息,可以使用gdb调试

-g选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调试时必须保证gdb能找到源文件

 

 

 

Gdb调试:

List(l)

从第一行列出源代码,一次10行,回车继续列出

 

List 函数名

列出该函数的源代码

 

List 行号

列出从行号开始的代码

 

Quit

退出gdb

 

Start

开始执行程序,停在main函数的第一条语句处;gdb列出的这条代码是即将执行的下一条语句

 

Next(n)

一条一条的执行代码

 

Step(s)

跳进函数去跟踪代码

 

Backtrace(bt)

查看函数调用的栈帧

 

Info(i) locals

查看函数局部变量值

 

查看main函数的局部变量值:

Frame(f) 1        //选择1号栈帧查看,使用bt可以查看出main函数所使用的栈帧号

Info locals

 

Print(p) 变量名

打印出变量的值

 

Finish

运行到当前函数返回为止

 

改变变量的值

Set var 变量名=

或者

Print(p) 变量名=

 

Display 变量名

每次停下来都显示该变量的值

 

Undisplay 变量名

取消跟踪显示

 

Break(b) 行号

在该行处设置断点

 

Break 函数名

在某个函数开头设置断点

 

Continue(c)

程序到达断点处停下来

 

Info(i) breakpoints

查看已经设置的断点

 

Delete breakpoints 断点编号

删除指定编号的断点

 

设置断点在满足某个条件时才激活

Break 行号 if 表达式

Break 9 if sum != 0

 

Run(r)

重新从函数开头连续运行

 

Watch 数组元素

设置观察点,例如watch shuzu[5]

 

Info(i) watchpoints

查看当前设置的观察点

 

X

x/7b shuzu    查看数组名为shuzu开头的7个字节单元的内容

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP