我不知道如何使用 Visual Studio 2015 调试 COM ATL C++ 进程外 exe 服务器。
对于 COM ATL DLL 来说没有问题,当我调用 COM dll 时断点会自动触发。然而,当我尝试调试 EXE 服务器时,调试器并没有中断。事实上,exe 服务器仅在需要时加载,并且在客户端启动时不会加载 exe 服务器的调试符号。
我的客户端(调用 COM 服务器)是 Excel VBA(我已在 VBA 编辑器中通过工具/引用添加了对 com exe 的引用)。为了调试它,我在 Visual Studio 调试命令中设置了 Excel.exe 的路径,并将 xlsm 文件的路径设置为参数。然后我就在Excel中调用VBA代码。它适用于 com DLL,但不适用于 COM Exe。我也尝试过将VS附加到Excel,但没有成功。
我找到了这篇文章(Windows COM - 如何调试 COM 服务器 https://stackoverflow.com/questions/7045722/windows-com-how-to-debug-a-com-server),这似乎是由提升/权限问题引起的,但我尝试了建议的答案,但它不起作用。
有人可以帮我解决这个问题吗?
如何调试进程外 com 服务器?
是否有必要将调试器附加到使用 EXE 服务器的客户端(在我的例子中是 excel)?
尝试调试 EXE 服务器是很棘手的。
我要做的就是修改注册表,以便在加载 EXE 时提示您对其进行调试。
以下是用于修改注册表的导出 .reg 文件的内容:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\YourExeName.exe]
"debugger"="vsjitdebugger.exe"
将 YourExeName.exe 更改为更有用的内容...
当您的 EXE 服务器启动时,系统将提示您启动调试器或从调试器的当前运行实例附加。已经运行调试器会更快更好...当我说“调试器”时,Visual Studio 的运行实例就可以了。
尝试调试 EXE 服务器时的一个问题是,当您设置断点并单步执行代码时,您可能会超过 COM 超时,然后调用您的进程的 EXE 客户端将因超时而调用失败,并且它将继续执行。当一切都在进行时,这不是一个问题。对于 EXE,在您认为可能有问题的区域的调试版本中包含更多 TRACE 语句可能会有所帮助。
严格来说没有必要附加到客户端进程。有时它有帮助,有时则没有。如果您有调用客户端进程的源代码,这显然会容易得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)