中国开发网: 论坛: 程序员情感CBD: 贴子 97466
pcplayer: 这个可能是你要的东东,我没仔细看。你研究一下:
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/ISmsdnmagissues1200tviewtoc.mspx

TView 概述
TView 有助于在开发过程中识别和修复错误、识别配置问题、监控中间层服务器以及终止行为不端的进程。有五个显示进程信息的文件夹(或视图):Memory 文件夹、Modules 文件夹、Environment 文件夹、Handles 文件夹和 Processes 文件夹。

Memory 文件夹可用于发现哪些虚拟地址范围正在使用或空闲。我已经使用该文件夹为某个 DLL 找到了新的唯一基址,为必须在每个进程中加载到同一虚拟地址的内存映射文件找到了一个虚拟地址,以及查明在物理内存中加载了 DLL 的多大部分(工作集)。我还使用该文件夹识别了一个性能问题 — 整个 DLL 都被加载到物理内存中,尽管尚未调用它的任一函数。

Modules 文件夹可用于确定所加载的模块的版本以及是从哪个目录加载的这些模块。我已经使用该文件夹解决了许多配置问题。例如,当某个程序能够在一台计算机上正常工作,但在另一台计算机上却不能正常工作时,我使用 TView 确定了系统 DLL 的版本,并且查明有一个 DLL 是从错误的目录中加载的(例如,从调试目录而不是发布目录中加载,或者相反)。Modules 文件夹还可以用于确定哪个 dllhost.exe 或 mtx.exe 进程是正确的进程,方法是查看已经在各个进程中加载了哪些 DLL。我已经使用该文件夹确定了要调试或终止的进程。

Environment 文件夹可用于确定从错误目录中加载 DLL 的原因。我已经使用它来查看进程的路径。即使您更改了系统路径,正在运行的进程的路径也不会改变。Environment 文件夹还可用于查看进程的命令行。我已经使用该文件夹来了解 dllhost.exe 的命令行参数 (/ProcessID:{AppID}),以及在有多个进程通过相同的可执行文件运行但使用不同的命令行时,确定要调试或终止的进程。

Handles 文件夹可用于查找句柄泄漏。例如,您可能需要查找没有用 RegCloseKey 匹配的 RegOpenKeyEx。

Processes 视图可用于确定哪些进程正在消耗资源(内存、句柄和 CPU)。我已经使用该视图确定了哪些进程正在消耗我的 64MB 或 128MB 内存的大多数内存,以及导致我的系统由于内存交换操作而变慢。正如您可以看到的,TView 具有许多用途。

TView 由一个客户端和一个服务器组成。客户端是一个 MMC 管理单元(参见图 1);服务器是一个 COM 组件,它在远程服务器上的 COM+ DLL 宿主(或 MTS)中运行。MMC 管理单元使用 DCOM 与 COM+ 组件通讯,如图 2 所示。

DCOM 接口
设计 TView 的第一步是定义 DCOM 接口 ITView。ITView 的接口定义语言 (IDL) 定义如图 3 所示。ITView 被设计为对于每个用户操作,所需要的 DCOM 调用不超过一个。ITView 使用 ActiveX 数据对象 (ADO) 断开记录集来在一次网络往返行程中返回大量数据。如果您认为 ADO 只用于访问数据库,则您应该改变对它的看法。ADO 本身就可能非常有用,而无需数据库或 OLE DB 提供程序。在使用下面的方法将 ADO 类型库导入 IDL 文件以后,可以在接口中使用 ADO 参数:

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录