UNIX系统开发-sdb命令使用:程序执行控制.pdfVIP

UNIX系统开发-sdb命令使用:程序执行控制.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UNIX 系统开发- sdb 命令使用:程序执行控制 我们说程序调试的主要目的是观察变量的变化情况。 但如果程序就一直不停地运行直至它终 止或出错时才停下来的话, 将没有机会去观察任何变量。 因此, 如何有效地控制程序中各语 句的执行, 使之在适当的时候暂停下来, 待调试人员在显示或设置了某些存储单元的值之后 再从停下的地方继续执行下去, 是调试程序应具有的一项基本功能。 在这一节中我们就来具 体介绍如何控制程序的运行。 对程序执行控制的第一个问题是设置断点。 一个断点实际上就是程序中某行语句。 当程序执 行到这条语句时控制会重复返回到 sdb,由此提供给用户进行其他操作,如显示变量值的机 会。 1.断点的设置和删除 在 sdb 中设置断点的方法比较多。但基本是 b 命令的变种。例如, 我们可以使用如下语句在 main() 函数的第一个可执行行(非变量定义这类语句)设置一个断点: * main:b 也可以直接用行号来设置断点。例如,在 myprog.c 中,第 10 行是 main() 函数中的第一个可 执行语句,则使用如下命令也能达到同样的效果: * 10b 注意这是在 myprog.c 为当前文件的情况下进行的。 如果直接输入: * b 命令, 则可将当前行设成是一个断点。但是若当前行不是一个可执行语句, 那么 sdb 将把当 前行之后的第一个可执行语句处设置一个断点。 在设置完断点之后,为了解程序中设置有哪些断点,可以使用 B 命令: * B 0x80483f0 myprog.c:10 main+0x8 0x80483f7 myprog.c:11 main+0xf 0x8048407 myprog.c:12 main+0xlf 0x8048440 myprog.c:9 TestInput 0x8048447 myprog.c:10 TestInput+ 0x7 0x804482 myprog.c:13 TestInput+ 0x42 在设置完断点之后要将其删除,可以使用 d 命令。如: * main:d sdb 将把在 main() 函数中设置的第一个可执行行上的断点删除。如果直接使用 d 命令, sdb 将逐个列出所有断点并询问用户是否删除之。回答 y 断点将被删除。使用 D 命令则可删除 程序中设置的所有断点。 2.sdb 中启动程序的运行 在设置好所需的断点之后我们就可以重新启动程序的运行了。这可以使用 r 命令。如: * r 111 2 BREAKPOINT process 554 function main() in myprog.c 10: for(i=1;iargc:i++) * sdb 将在 main() 函数中设置第一个断点处停下来并显示该行的语句。 r 后面给出的是传给可 执行程序 myprog 的两个参数。因此上述命令同在 shell 提示符下输入: $ myrprog 111 2 是相同的。不同的只是在 sdb 中程序的执行会在断点处停下来。 如果只输入 * r 命令, sdb 使用最近一次执行调试程序时给它提供的参数来启动之。如果想不带任何参数来 重新启动程序的运行,可使用 * R 命令。 3.控制程序的单步或者连续执行 在用 r(R) 命令启动程序的运行之后, sdb 将在第一个断点处暂停程序的运行。此时断点行成 为当前行,但并未被执行。此时我们可以在 sdb 的星号( *) 提示符下输入前面已介绍过的或 后面将要介绍的各种命令。 当然最重要的是显示那些关键变量的值, 以了解程序的运行

文档评论(0)

***** + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档