- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
掌握Cbuilder的除错艺术
掌握C++ builder的除错艺术(2).1
2007-8-10???? 作者:?? ???? 编辑:眼镜丢了?? 点击进入论坛
掌握C++Builder的除错艺术
第二篇-近距离观察(1)
1. 调试可执行程序前的准备
2. 工程选项
3. 设置断点并闯入可执行程序
4. 察看储存在变量中的值
5. 使用Watches(观察)
6. 使用Inspectors(巡视器)
7. 使用Evaluate/Modify(求值/修改)
8. Stepping Through, Over and Around Blocks of Code
9. Stepping的类型
10. Stepping的注解
11. 其他提示
Okay,(再小小准备一下)现在开始追踪、搜索经过前次的努力后仍然躲在代码中的bug的时候了,也就是开始跟踪前一篇文章代码里标记过的bug/异常。首先是准备阶段。
调试可执行程序前的准备
在我们开始调试可执行程序前,我们需要确保一些设置在大多数情况下的正确性。我将会一条接一条的过一遍,并简单解释一下为什么必须那样做。(如果您对有些东西感兴趣的话,按下帮助按钮,会有许多更详尽的内容)。现在就开始吧,先打开Project|Options选项。
工程选项
首先我们在Compiler(编译)标签处停下。您只需简单的单击Full debug(完全调试模式)按钮,我们所需的绝大多数的其余设置就已经搞定了。将Code optimization(代码优化)设为None(无)总是件好事,这样做实际上告诉编译器:所有的事情都已做好,只需产生机器码就行了。而不要为了提高一点点运行速度尝试进行其他的智能优化。(当然,一切都完成之后,您可以打开此项。)这样做的好处是大大降低了我们调试的难度。因为程序中的代码与我们书写的一样,没有被编译器优化过。在debugging(调试)面板中,将Debug information(调试信息)选上(点一下),并且必须设置为Line number information(行数信息)。我还建议将Disable inline expansions(禁用内联扩展)一项选上。内联扩展对发布的代码来说很好,但调试时最好还是关掉此项,他只会让您更头痛。
然后是Pascal标签,尤其在您的工程里连接了Pascal单元或使用了基于Pascal的VCL控件时(若您拥有其Pascal源码时,编译器会自动使用此节中的设置重新编译)。这里您必须将Optimization优化选项禁用,然后通常我会将debugging(调试)部分的所有选项选上(打钩)。
接下来是Linker(链接)标签,我们需要选上Create debug information(生成调试信息)。Use dynamic RTL(使用动态RTL)以及Dont generate state files(不要生成状态文件)是造成麻烦的选项。我通常都会使用状态文件(这样允许增量链接,但会在编译目录下产生一个4倍于可执行程序或更大的文件),换个角度来说,这样会增加链接大工程时的速度。而使用dynamic RTL本身就是个争论,尚有很多赞同和反对的讨论。
下一个是Directories/Conditionals(路径/条件)标签。在这里我们想要设定Directories/Conditionals(调试源路径)的值。我们永远都应将此处设定为$(BCB)\source\vcl,但是如果您有任何其他的组件附加的话,通常将它们的路径也加上是个好主意(路径与路径之间用”;”分隔或者您可以用按下…按钮弹出的对话框来设定它们)。
最后也是最重要的设置是在Packages(程序包)标签上。根据所有恰如其分的调试经验您必须禁用Build with runtime packages(带运行时程序包编译)。这么做的原因是程序包本身不包含而且不能包含调试信息。这样做,也许不利于您跟踪标准的VCL代码,例如想看清楚VCL函数y中参数x是如何起作用的时候。但是大多数时候,您这么做将会发现调试器将您的绝大多数“症状”归结给VCL,尽管“病因”就在您的源代码中(或在其他的组件中(这已经在我们所有人身上发生了))。一旦您发布您的正式版本时,您可以决定是否使用程序包。(译者注:程序包的本质是一个特殊的DLL,不带运行程序包(静态)编译可以让您的程序脱离Cbuilder独立运行。),但在调试时,请禁用掉。按下OK按钮,我们已经准备好啦。下一个对话框只需打开一次,但最好还是来检查以下我们在这里的设定是否正确。好了,打开”Tools|Debugger Options…”吧。
对话框最下方的Integrated debugging(集成调试器)选项是关键所在。确信已经打上钩。按下OK按钮
文档评论(0)