【发布时间】:2013-06-27 12:56:23
【问题描述】:
基本上,我正在开发一个供第三方软件使用的 DLL(一个开放接口)。我想在这个第三方 DLL 加载我的 DLL 后对其进行调试,因为我发现了一个特定的错误,只有当我的 DLL 被这个第三方软件加载时才会发生(我的 DLL 对于接受这个开放接口的所有其他软件都可以正常工作)
我在我的代码 DLL 中设置了 __debugbreak() 并运行第三方软件。一个 Visual Studio 对话框确实跳了出来,询问我是否要调试。但是在我单击“确定”后,Visual Studio 没有进入显示我设置断点的代码行的 Visual Studio 窗口,而是崩溃了。
我发现第三方软件加载了我的 DLL 并在另一个线程中运行它。我怀疑这是第三方软件崩溃的原因,因为有效地 __debugbreak() 在主线程启动的线程中抛出了一个未捕获的执行。
在这种情况下,我该如何调试我的 DLL?
【问题讨论】:
-
什么是第三方软件?为什么它同时列为
c和c++?您是否尝试在弹出警告对话框之前将调试器附加到进程? -
这是一个内部 odbc 项目,由 c 和 c++ 混合实现。
-
我尝试在弹出警告对话框之前将调试器附加到进程中,但是VS显示符号无法加载...
-
什么是第三方软件? “无法加载符号”有什么关系?您是否尝试过
printf调试 - 将一些跟踪信息写入系统上的文本文件并不断刷新,这样您就可以获得加载的进程 ID(等)?
标签: c++ c debugging debugbreak