繁体   English   中英

如何在 Delphi 中调试通常从 MSC 应用程序运行的 Com+ DLL

[英]How to debug Com+ DLL in Delphi that normally gets run from MSC application

虽然我有多年的 Delphi 经验,但这是我第一次接触 Com+。 我的客户有一个我必须维护的 Com+ 应用程序。 在最终用户世界中,DLL 由 MSC(Microsoft 公共控制台文档)应用程序运行。 我该如何调试这个 DLL? 我已将调试器选项下的主机应用程序设置为 C:\\WINDOWS\\SYSTEM32\\DLLHOST.EXE,并将参数设置为 /ProcessID:{Application ID from Component Services}。 DLL 运行,但它没有给我任何暴露/访问 DLL 的 GUI 方面的机会。 我所有的断点也设置为绿色(无法访问)。

您是否在组件服务的本地配置中找到了“来自组件服务的应用程序 ID”? 如果这样做,请保持组件服务视图打开,并切换到显示当前进程的备用报告视图。 在您启动调试器(以及将连接到 COM+ 管理的DLLHOST.EXE之前,您的组件应该没有正在运行的进程。 只有这样,当对组件的对象发出第一个 COM+ 请求时,调试器才会看到 DLL 被加载并能够捕获异常和断点。

最后,这解决了我的问题:在 Project -> Options -> Delphi Compiler -> Compiling: Change the Optimization to FALSE and the Stack frames to TRUE

在项目 -> 选项 -> Delphi 编译器 -> 链接下:将包含远程调试符号设置为 TRUE。

运行 -> 参数必须如下所示: 在此处输入图片说明

ProcessID 是组件服务中 COM+ 应用程序的应用程序 ID(右键单击您的 COM+ 应用程序并选择属性): 在此处输入图片说明

请记住在完成所有更改后重建和注册您的 DLL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM