Linux GDB调试

为了练习   写了一段希尔排序(代码拷贝不出来   就不贴了)

在待调试的程序代码中添加调试信息:

[mjj@hadoop-senior test]$ gcc sort.c -o app -g

即在GCC编译的基础上加上选项-g,此时生成一个带有调试信息的可执行文件app。

[mjj@hadoop-senior test]$ gdb app
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/mjj/test/app...done.
(gdb) 

执行命令之后,系统输出gdb的版本号及其他相关信息,此时命令提示变成(gdb)

设置断点:

(gdb) list 22

用于列出22行附近的10行代码

b 22

给22行设置断点

b 22 if i=5

设置断点时还可以指定条件,以上表示i=5时设置断点

info b

查看代码中已经设置的断点

(gdb) info b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000000040063f in shell_sort at sort.c:22
 

信息包括:断点编号Num,断点状态Enb,断点位置Address以及断点在程序中所处的位置

Enb为y表示断点生效,可使用disable Num可使Enb变为n(断点无效)

delete 1 :删除num为1的断点

遇到断点时程序会停止,可以使用   [p 变量名] 查看当前状态下代码中变量的值

run:运行程序

若希望程序继续往下执行,使用命令s(step 单步执行),使用s会进入C函数内部,可以使用n跳过库函数检查,也可以使用finish跳出当前函数

display:用法与p相同,但是程序每往下执行一句,需要跟踪的变量的值就会输出一次,使用undisplay取消跟踪

若想结束调试,可使用continue结束当前断点调试,在使用quit退出调试,回到命令窗口

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值