转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Delphi深度探索-CodeSite应用指南         ★★★★

Delphi深度探索-CodeSite应用指南

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2242 更新时间:2009/4/23 18:39:53

Delphi深度探索-CodeSite应用指南

    Delphi虽然为我们提供极其强大的调试功能,查找Bug仍然是一项艰巨的工作,通常我们写代码和调试代码的所消耗的时间是大致相同的,甚至有可能更多。为了减少无谓的时间和精力的浪费,有时我们还是需要专业调试工具的帮助来提高锁定Bug的效率。本文中我们将介绍著名的调试工具CodeSite Pro 2.0(它获得了2000年度Delphi Informant读者选择的最佳调试工具奖的第二名)。它的官方网址是www.raize.com。

    CodeSite的主要功能是可以让开发者使用代码来发送运行时的详细信息到特殊的接收器,以便于进一步分析。更精确的说通过CodeSite实现的TCodeSite类,我们可以打包并发送运行时的信息给CodeSite Dispatcher(CodeSite的消息分发器),它可以路由这些消息到一个或多个接收器来察看。缺省的信息接收器是CodeSite Viewer(消息察看器)。

    CodeSite的效率体现在它不同于简单的显示消息的对话框或设定断点来检查变量,它更类似于Delphi自带的事件日志功能(Event Log),当然毫无疑问它要比Event Log强大的多,它的消息是可持续的,也就是可以保存的,便于回溯分析。

    在介绍CodeSite的具体使用前,我们先来看一下它的三个组成部分。

    CodeSite对象

    正如前面提到的,从运行的应用程序中向外发送CodeSite消息是通过使用TCodeSite类(定义在CSIntf单元中)的一个实例来完成的,我们只要简单的调用TCodeSite类的方法就可以 把消息发送给CodeSite Dispatcher。比如,可以使用对象的SendMsg方法来发送一个简单的字符串消息。TCodeSite 对象实现了大量的方法来支持各种类型的信息发送而无须任何数据转换,比如对象的SendObject方法有两个参数:一个是消息字符串,一个是对对象实例的引用,这个方法会获取对象所有published的属性,然后把这些属性的信息打包进CodeSite的消息中。 

    CodeSite Dispatcher

    大多数情况下,CodeSite Dispatcher会安静的运行在系统的托盘区。它的唯一功能是路由从各个TCodeSite对象发来的CodeSite的消息到它们的目的地。缺省时,CodeSite消息都会发给CodeSite Viewer。我们甚至不需要启动CodeSite Dispatcher,因为它会被TCodeSite等对象自动启动。 

    TCodeSite 类定义了一个DestinationDetails属性,它允许开发者设定发送的CodeSite消息是如何被CodeSite Dispatcher路由到不同目的地,比如日志文件。但通常没有必要修改这个属性。

    CodeSite Viewer

    虽然CodeSite 支持发送消息到不同的目标,但决大多数情况下CodeSite Viewer是主要的发送目标。即使是发送到其他目标,比如日志文件或另外一台机器,CodeSite Viewer仍然是察看分析消息的主要工具。 

    CodeSite Viewer由下面四个面板构成:消息列表,消息察看器,调用堆栈和Scratch面板。CodeSite Viewer的主要工作区是Message列表,它用来显示发送给Viewer的全部消息或是从日志文件中加载的消息。

    消息察看器用来察看同消息关联的额外信息。比如如果当前的消息是由SendObject方法发送的话,消息察看器就会显示对象全部的publised属性当前值。 

    调用堆栈面板会根据csmEnterMethod消息显示一个堆栈视图。 

    Scratch面板则是用来显示非可持续的信息的。当我们想跟踪某些信息,但又不想在消息日志中记录它们的时候,比如当我们想察看象鼠标当前位置这类大量的并重复的消息时,Scratch面板是非常有用的。这时我们可以可以使用TCodeSite对象的WritePoint方法,并指定Line ID参数以便指定用来容纳鼠标信息的scratch面板行数。 

    下面就让我们用一个简单的例子来演示一下如何从程序中发送消息给CodeSite Viewer:

    (1)创建一个新的项目,然后切换组件面板到CodeSite页面(CodeSite安装后会在系统中安装两个组件TCSGlobalObject和TCSObject)。选择TCSGlobalObject组件然后放到窗体上。TCSGlobalObject组件提供了设计时对全局TCodeSite对象的交互(全局TCodeSite是在CSInft单元中被初始化的)。

    (2)添加一个按钮,然后在它的OnClick事件中写下如下代码:

    //CodeSite就是全局的TCodeSite对象

    CodeSite.SendMsg(‘CodeSite的第一条消息’);

    (3)编译并运行这个简单的程序。运行后点击按钮,CodeSite Dispatcher和CodeSite Viewer将会运行。同时在CodeSite Viewer的消息列表中将会看到程序发出的消息(注意:我们没有必要在程序运行前启动CodeSite Dispatcher和CodeSite Viewer,因为TCodeSite 对象在需要发送消息的时候会自动启动它们的)。运行结果如下图4.38所示:

图4.38

 

 

 

 

 

 

 

 

 

 

 


    (4)接下来,停止程序,在OnClick事件处理过程中添加下面代码:

    CodeSite.SendObject(''''Form1'''', Form1 );

    (5)重新编译运行程序,再点按钮一次,这回你会在CodeSite Viewer中看到两条消息。其中Form1对应的消息包括Form1的对象信息。

    (6)为了看到Form1的相关联的对象信息,选择CodeSite Viewer的菜单命令View|Inspector会在消息列表右侧显示一个新的面板,Form1的published属性都被显示在其中,如下图4.39所示:

图4.39

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


    (7)再次停止程序,然后修改OnClick过程中代码如下:

    CodeSite.EnterMethod(''''Button1Click'''');

    CodeSite.SendMsg(''''CodeSite的第一条消息'''');

    CodeSite.SendObject(''''Form1'''', Form1 );

    CodeSite.ExitMethod(''''Button1Click'''' );

    (8)这次我们再运行程序点击按钮后,就会看到“CodeSite的第一条消息”和“Form1”的消息被缩进在“Button1Click”消息之间,如下图4.40所示:

图4.40

 

 

 

 

 

 

 

 

 

 

 

[1] [2] [3] [4]  下一页


[ORACLE]Oracle PL/SQL Profiler应用指南  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台