当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

掌握C++ builder的除错艺术(2).1[VC/C++编程]

赞助商链接



  本文“掌握C++ builder的除错艺术(2).1[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

第二篇-近距离察看(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)以及"Don’t 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按钮预备编译可执路程序吧.我倡议重新来一次完好的编译(挑选Project|Build All),假如您改正过您的设置的话(特别是改变”building with packages”方法后).这将保证我们的全部程序单元按照我们所但愿的那样被编译.

设置断点并闯入可执路程序

象您所见过的其他任何一款调试器一样,C++Builder供应强盛的断点设置功效.基本上,断点是指代码中的一个点,程序履行至此停下(与退出差别,这只是履行中的暂停)并将掌握权交还给调试器.设置一个断点相当简单.只需在您想要设置的程序代码行左侧的灰色槽形区域点击,您会看到一个红点呈现,这一行也会变红.程序运行到这一点就会暂停,将掌握权交还给调试器.

您大概会问假如我不想每次都停下来呢?当然可以,并且还很简单做到,这取决于您暂停程序的尺度是什么?(译者注:条件断点).在方才那个断点(红点)上右击鼠标并从弹出菜单上挑选” Breakpoint Properties”(断点属性).此处可以设定两种属性"Condition"(条件)和"Pass Count"(通过次数).Condition(条件)属性太便利了.您可以操纵if()语句输入几近是肆意的条件.但请紧记条件中的全部变量,对此断点都应是可见的.条件属性并未被编译器编译到执路程序中,而是在运行时,当程序运行至断点暂停后,查抄断点的条件能否满意.条件为真,停下,不然让程序持续运行.另一个属性"Pass Count"(通过次数)也很简单理解.断点将被通过Pass Count次后停下.结合利用这两个属性,在调试您的代码时,您可以设定非常严峻的断点.

还有一件要紧记的是,当您在调试器中发生非常时,会以产生非常处的那一行代码上的断点的情势呈现.这种情形很简单制造.一旦您得到一个非常后应做的步骤我会在今后展示如安在仓库中回溯并跟踪找出非常发生的真正缘由(如惹起非常产生的那一小片代码).

另一个要紧记的提醒是当您运行您的程序时,代码窗口左侧有蓝点的肆意一行都可以设成断点.全部不法的断点将会变成红点中带一个黄色的小叉,这一行代码也会变成黄褐色.合理的断点则变成红点中带一个绿色的小钩.运行时,您可以设置/改正肆意一点,断点当即见效而无须重新编译.
  以上是“掌握C++ builder的除错艺术(2).1[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 掌握CB的调试艺术
  • 掌握C++ builder的除错艺术(1)
  • 掌握C++ builder的除错艺术(2).2
  • 掌握C++ builder的除错艺术(2).1
  • <b>用JavaScript掌握CSS的float属性</b>
  • <b>学习Dreamweaver8理解掌握CSS层叠款式表</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .