CodeSite的关键效率体现在它不同于简单的显示消息的对话框或设定断点来检查变量,CodeSite消息不是瞬间的,它的消息是可持续的,也就是可以保存的,便于回溯分析。当使用消息盒和断点时发送一个CodeSite消息不中断应用程序流程。

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