gcc和gdb

Linux doc   by: zollty

gcc编译命令如下:

gcc test1.c……默认编译产生的可执行文件为a.out

gcc test1.c -o test1.out…参数-o test1.out用于将生产的可执行文件命名为test1.out

 

实际上编译分3个阶段,预处理、编译、汇编,每个阶段生成不同的文件,分步编译如下:

gcc -E test.c -o test.i,在预处理之后停下来,输出中间文件*.i

gcc -S test.i -o test.s,在编译之后停下来,输出汇编语言文件*.s

gcc -c test.s -o test.o,在汇编之后停下来,输出二进制机器代码文件*.o

gcc test.o -o test,最后链接阶段,将*.o文件和其他机器代码文件、库文件汇集成一个可执行的二进制代码文件。

这几个过程可以简化成

gcc test.c -o test

还有两种常见写法:

gcc -g test.c -o test

gcc test.c -g -o test

这两种写法是为准备gdb调试用的,所以加上了-g,没有这个参数编译后的test无法用于gdb调试。

 

gdb调试C程序

先要用gcc编译,见上面写的两条命令。然后就可以用gdb来调试了。

gdb常用命令如下:

gdb -q test或者gdb -q然后file test

quit

kill

run

continue

step

next

stepi

nexti

list

search向前查找,等同于forward

reverse-search向后查找

shell例如shell ls

break例如break 7或break fun1或break 7 if i==99

watch例如watch i==99,当i==99值发生变化时会停下来

info breakpoints

clear例如clear 7(行号)或clear fun1或clear(清楚全部断点)

delete例如delete 2(断点编号)

enable

disable例如disable 2(断点编号)

print例如p sum或p i<n或p i=200(赋值)

set赋值,例如set variable i=200

    用p(print)命令显示变量或表达式的值,每次执行n后都要执行p非常麻烦,可以用display [expr]设置自动显示。例如:

display a[i]……………………设置a[i]为自动显示

disable display………………禁用自动显示

enable display………………恢复自动显示

delete display………………删除

    next,step等都是单步执行,设置连续执行的步数:cont,例如:

cont 13……………程序连续执行13步

注:linux下调试程序用图形化界面的kdbg或者ddd比DBG更加方便,下图是kdbg的界面。

 

转载于:https://www.cnblogs.com/zollty/archive/2011/09/13/2879289.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值