linux单步调试方法,linux下gdb单步调试(中).doc

linux下gdb单步调试(中)

linux下gdb单步调试(中)

linux下gdb单步调试(中)

一、设置断点( BreakPoint )

我们用 break 命令来设置断点。正面有几点设置断点的方法:

break

在进入指定函数时停住。 C++ 中可以使用 class::function 或 function(type,type) 格式来指定函数名。

break

在指定行号停住。

break +offset

break -offset

在当前行号的前面或后面的 offset 行停住。 offiset 为自然数。

break filename:linenum

在源文件 filename 的 linenum 行处停住。

break filename:function

在源文件 filename 的 function 函数的入口处停住。

break *address

在程序运行的内存地址处停住。

break

break 命令没有参数时,表示在下一条指令处停住。

break ... if

... 可以是上述的参数, condition 表示条件,在条件成立时停住。比如在循环境体中,可以设置 break if i=100 ,表示当 i 为 100 时停住程序。

查看断点时,可使用 info 命令,如下所示:(注: n 表示断点号)

info breakpoints [n]

info break [n]

二、设置观察点( WatchPoint )

观察点一般来观察某个表达式(变量也是一种表达式)的值是否有变化了,如果有变化,马上停住程序。我们有下面的几种方法来设置观察点:

watch

为表达式(变量) expr 设置一个观察点。一量表达式值有变化时,马上停住程序。

rwatch

当表达式(变量) expr 被读时,停住程序。

awatch

当表达式(变量)的值被读或被写时,停住程序。

info watchpoints

列出当前所设置了的所有观察点。

三、设置捕捉点( CatchPoint )

你可设置捕捉点来补捉程序运行时的一些事件。如:载入共享库(动态链接库)或是 C++ 的异常。设置捕捉点的格式为:

catch

当 event 发生时,停住程序。 event 可以是下面的内容:

1 、 throw 一个 C++ 抛出的异常。( throw 为关键字)

2 、 catch 一个 C++ 捕捉到的异常。( catch 为关键字)

3 、 exec 调用系统调用 exec 时。( exec 为关键字,目前此功能只在 HP-UX 下有用)

4 、 fork 调用系统调用 fork 时。( fork 为关键字,目前此功能只在 HP-UX 下有用)

5 、 vfork 调用系统调用 vfork 时。( vfork 为关键字,目前此功能只在 HP-UX 下有用)

6 、 load 或 load 载入共享库(动态链接库)时。( load 为关键字,目前此功能只在 HP-UX 下有用)

7 、 unload 或 unload 卸载共享库(动态链接库)时。( unload 为关键字,目前此功能只在 HP-UX 下有用)

tcatch

只设置一次捕捉点,当程序停住以后,应点被自动删除。

四、维护停止点

上面说了如何设置程序的停止点, GDB 中的停止点也就是上述的三类。在 GDB 中,如果你觉得已定义好的停止点没有用了,你可以使用 delete 、 clear 、 disable 、 enable 这几个命令来进行维护。

clear

清除所有的已定义的停止点。

clear

clear

清除所有设置在函数上的停止点。

clear

clear

清除所有设置在指定行上的停止点。

delete [breakpoints] [range...]

删除指定的断点, breakpoints 为断点号。如果不指定断点号,则表示删除所有的断点。 range 表示断点号的范围(如: 3-7 )。其简写命令为 d 。

比删除更好的一种方法是 disable 停止点, disable 了的停止点, GDB 不会删除,当你还需要时, enable 即可,就好像回收站一样。

disable [breakpoints] [range...]

disable 所指定的停止点, breakpoints 为停止点号。如果什么都不指定,表示 disable 所有的停止点。简写命令是 dis.

enable [breakpoi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值