在Visual Studio中调试Excel加载项

问题描述

一如既往,如果以前已经对此表示歉意。

我正在编写一个COM dll(Visual Studio 16.7.1,C ++,ATL),以便与Excel中的VBA一起使用。我可以使用OutputDebugString()函数从我的dll中输出一些重要信息,但是它会丢失于大量来自Excel的调试信息中(异常,加载,卸载等)。

有没有一种方法可以选择不查看从Excel本身生成的调试信息(可能是调试属性中的某些复选框)?我已经使用了AllocConsole()来获得要写入的单独窗口,但这似乎在std :: cout和printf()上都引发了异常。 (我将AllocConsole()放在COM dll的dllmain中……这可能不是正确的位置……)。

我真的不想将调试信息写入文件,因为我想在逐步执行VBA代码时观看调试信息。

提前感谢任何指针。

解决方法

尝试TraceTool-它可以捕获OutputDebugString信息并具有过滤器功能。

另一种方法是使用专用的日志记录库(我发现 spdlog 很好,但我绝对不想参与辩论),然后设置该库以刷新日志文件在每条消息上。 (实际上,您可以只使用C ++流写入文件,然后在每条消息后刷新,但是使用适当的库是更好的长期解决方案)。然后,您只需要查看日志文件的tail。您可以按照以下说明的各种方式来执行此操作:A Windows equivalent of the Unix tail command甚至使用TraceTool!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...