中华网通行证
用户名 密码
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 手机上网 桌面壁纸 科技商情  

掌握C++ Builder以代码为基础的调试方法(3)
霍炬编译 2001-04-27 13:43:36

  

  这个机制还有更多的功能。如果你想处理异常,但是不想在处理的位置停止,那么可以重新抛出异常。这时,程序将继续寻找下一个catch()语句来处理这个异常。这个方法和“throw”差不多。这样,你处理过的异常会再次被抛出,继续寻找下一个catch语句来处理它。

  最后一个要说的是__finally(这不是标准的用法,是Borland添加的一个好方法),在__finally{}程序块中代码,无论是否发生异常都会被执行。这是一个清理程序中使用new分配的本地变量,设置用作旗标的变量值为正常的好位置。(比如,把一个等待状态的光标图标设置为正常光标。)

  就是这些了。有时间的话,请看看C++Builder帮助文件中的Exception类以及继承Exception的类。这些将对于理解本节所说的内容有很大帮助。

  使用记录机制
  你不可能总是用调试器来调试代码,在某些情况下,可能无法使用内部集成的调试器,这时候,你就不得不依靠其他手段调试程序了。(比如:Windows NT服务程序,ISAPI/CGI程序,实时应用程序等等)。这时候,有经验的程序员可能会借助古老的调试方法,例如,使用一些分类的记录机制来确定程序实际运行的过程。我们很幸运,现在有一系列的方法可以简单的完成这样的工作。下面将介绍3种我最喜欢的方法。

  第一个:OutputDebugString。(WinAPI: VOID OutputDebugString(LPCTSTR lpOutputString);)很幸运,微软彻底的实现了调试子系统。它包括的一些特点可能让你想把自己的记录系统扔掉。应用程序在调试器进程中运行时OutputDebugString将用C字符串把调试器输出的信息打印出来。如果程序没有在调试器进程中运行,它将忽略这些调用。它会很好的在客户的机器上运行,不会弹出信息窗口。如果在发布给客户的时候,忘记去掉这些代码程序仅仅会变慢一点,不会有别的不良后果。

  第二个方法:使用了GExperts,通过 dbugint.pas接口进行调试。它是个可以称之为伟大的程序,你可以把它分发给客户。和OutputDebugString一样,如果客户没有这个程序,它就根本什么也不作。(它会自动检测机器上是否安装了客户端)。要使用dbugintf,它很容易被加入到你的工程中,加入#include "dbugintf.HPp"(要把它加入工程,然后会编译它的pascal文件)。然后,你就可以直接使用SendDebug(要送到记录文件的字符串); 或者,你需要它更机警一些,可以使用SendDebugEx(它给TMsgDlgType增加了一个新的消息类型)SendMethodEnter, SendMethodExit, SendSeparator等等(用法都差不多)。如果你打算给最终用户分发客户端 (Gdebug.exe),不要忘记include所需要的程序包。GExperts可以在http://www.gexperts.org 得到,它是免费的。

|首 页||上一页||下一页||尾 页|

赛迪网



相关报道
 
更多本栏目内容
??Windows 2000系统安全设置攻略
??Dreamweaver编写CSS需要掌握的技巧
??使用Flash MX过程中的3个小技巧
??拖IE9网站图标到Win7任务栏 精彩好礼任你拿
??从此不再耗流量?Google离线地图试用
??给瑞星添加移动存储自动杀毒功能
??一周壁纸榜单 靓丽风景伴您欢度周末
??金山网络七款软件齐升级 炫丽界面贺新春
??提升网站流量和权重 百度热榜排第一
预警:电商促销引钓鱼 七夕网购需谨慎

本站检索



中华网推荐

·国家级治脑病新药思维源
·中藏药治疗脑病新突破
·治类风湿,强直性脊柱炎
·养肾·痛风·长寿
·肝病泌尿脑萎缩新药介绍
·强直性脊柱炎康复乐园
·让中医辩证不孕不育
·国医治股骨头坏死一绝
·乙肝为何久治不愈?
·二千元垄断批发做老板
·中医中药专治前列腺
·治牛皮癣白癜风已成现实
·专治痛风病的白衣天使
·不孕不育的杏林奇葩
·专卖店零售管理系统





   

网络教室编辑信箱