gdb单步调试(中).doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
gdb单步调试(中)

一、设置断点( BreakPoint ) 我们用 break 命令来设置断点。正面有几点设置断点的方法: break function 在进入指定函数时停住。 C++ 中可以使用 class::function 或 function(type,type) 格式来指定函数名。 break linenum 在指定行号停住。 break +offset break -offset 在当前行号的前面或后面的 offset 行停住。 offiset 为自然数。 break filename:linenum 在源文件 filename 的 linenum 行处停住。 break filename:function 在源文件 filename 的 function 函数的入口处停住。 break *address 在程序运行的内存地址处停住。 break break 命令没有参数时,表示在下一条指令处停住。 break ... if condition ... 可以是上述的参数, condition 表示条件,在条件成立时停住。比如在循环境体中,可以设置 break if i=100 ,表示当 i 为 100 时停住程序。 查看断点时,可使用 info 命令,如下所示:(注: n 表示断点号) info breakpoints [n] info break [n] 二、设置观察点( WatchPoint ) 观察点一般来观察某个表达式(变量也是一种表达式)的值是否有变化了,如果有变化,马上停住程序。我们有下面的几种方法来设置观察点: watch expr 为表达式(变量) expr 设置一个观察点。一量表达式值有变化时,马上停住程序。 rwatch expr 当表达式(变量) expr 被读时,停住程序。 awatch expr 当表达式(变量)的值被读或被写时,停住程序。 info watchpoints 列出当前所设置了的所有观察点。 三、设置捕捉点( CatchPoint ) 你可设置捕捉点来补捉程序运行时的一些事件。如:载入共享库(动态链接库)或是 C++ 的异常。设置捕捉点的格式为: catch event 当 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 libname 载入共享库(动态链接库)时。( load 为关键字,目前此功能只在 HP-UX 下有用) 7 、 unload 或 unload libname 卸载共享库(动态链接库)时。( unload 为关键字,目前此功能只在 HP-UX 下有用) tcatch event 只设置一次捕捉点,当程序停住以后,应点被自动删除。 四、维护停止点 上面说了如何设置程序的停止点, GDB 中的停止点也就是上述的三类。在 GDB 中,如果你觉得已定义好的停止点没有用了,你可以使用 delete 、 clear 、 disable 、 enable 这几个命令来进行维护。 clear 清除所有的已定义的停止点。 clear function clear filename:function 清除所有设置在函数上的停止点。 clear linenum clear filename:linenum 清除所有设置在指定行上的停止点。 delete [breakpoints] [range...] 删除指定的断点, breakpoints 为断点号。如果不指定断点号,则表示删除所有的断点。 range 表示断点号的范围(如: 3-7 )。其简写命令为 d 。 比删除更好的一种方法是 disable 停止点, disable 了的停止点, GDB 不会删除,当你还需要时, enable 即可,就好像回收站一样。 disable [breakpoints] [range...] disable 所指定的停止点, breakpoints 为停止点号。如果什么都不指定,表示 disable 所有的停止点。简写命令是 dis. enable [breakpoints] [range...] enable 所指定的停止点,

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档