当前位置:  开发笔记 > 编程语言 > 正文

如何调试进程外服务器的COM C ++?(客户端:Excel vba)

如何解决《如何调试进程外服务器的COMC++?(客户端:Excelvba)》经验,为你挑选了1个好方法。

我不知道如何使用Visual Studio 2015调试COM ATL C ++进程外exe服务器。

对于COM ATL DLL没问题,当我调用COM dll时会自动触发断点。但是,当我尝试调试EXE服务器时,调试器没有中断。确实,仅在需要时才加载exe服务器,并且在客户端启动时不加载exe服务器的调试符号。

我的客户端(称为COM服务器)是Excel VBA(我已经通过工具/参考在VBA编辑器中将对com exe的引用添加到了该文件中)。要对其进行调试,我在Visual Studio Debug命令中将路径设置为Excel.exe,并作为参数将路径设置为xlsm文件。然后,我只是调用在Excel中调用VBA代码。它适用于com DLL,但不适用于COM Exe。我还尝试通过将VS附加到Excel上,但没有成功。

我已经找到了这篇文章(Windows COM-如何调试COM服务器),这似乎是由提升/权限问题引起的,但是我尝试了建议的答案,但是没有用。

有谁能帮助我吗?

您如何调试进程外的com服务器?

是否有必要将调试器附加到使用EXE服务器的客户端(因此以我为例)?



1> Joseph Willc..:

尝试调试EXE服务器非常棘手。

我要做的是修改注册表,以便在加载EXE时提示您调试。

这是用于修改注册表的导出的.reg文件的内容:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\YourExeName.exe]
"debugger"="vsjitdebugger.exe"

将YourExeName.exe更改为更有用的内容...

启动EXE服务器时,系统将提示您启动调试器或从调试器的当前运行实例进行附加。已经有一个调试器正在运行,这是更快,更好的方法。当我说“ debugger”时,可以运行Visual Studio实例。

尝试调试EXE服务器时的一个问题是,当您设置断点并单步执行代码时,您可能会超过COM超时,然后由于超时,调用您的进程的EXE客户端将失败,并且它将继续执行。当一切都在进行中时,这不是问题。对于EXE,在您认为可能存在问题的区域的调试版本中包含更多TRACE语句可能会有所帮助。

严格来说,不必附加到客户端进程。有时这是有帮助的,有时却没有帮助。如果您拥有调用客户端进程的源代码,显然会容易得多。

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有