gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:05:55 25 4
gpt4 key购买 nike

我不知道如何使用 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 - 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 语句可能会有所帮助。

并非绝对有必要附加到客户端进程。有时它有帮助,有时则没有。如果您有调用客户端进程的源代码,显然会容易得多。

关于excel - 如何调试 COM C++ 进程外服务器? (客户端: Excel vba),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41670385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com