2013-06-27 50 views
3

基本上,我正在开发将由第三方软件使用的DLL(开放接口)。我想在由第三方DLL加载后调试我的DLL,因为我发现了一个特定的错误,只有当我的DLL由此第三方软件加载时才会发生(我的DLL适用于所有其他接受此开放接口的软件)如何附加到加载我的DLL并进行调试的进程

我在我的代码DLL中设置__debugbreak()并运行第三方软件。一个Visual Studio对话框确实跳起来询问我是否想调试..但是当我点击OK后,而不是进入一个显示我设置断点的代码行的Visual Studio窗口,Visual Studio刚刚崩溃。

我发现第三方软件加载我的DLL并在另一个线程中运行它。我怀疑这是第三方软件崩溃的原因,因为有效地__debugbreak()在主线程启动的线程中抛出未捕获的执行。

在这种情况下,我该如何调试我的DLL?

+2

什么是第三方软件?为什么将它列为'c'和'C++'?你有没有试图在弹出警告对话框之前将调试器附加到进程? – Yakk

+0

这是一个内部的odbc项目,由c和C++混合实现。 –

+0

我试图在弹出的警告对话框之前附加调试器,但VS显示符号无法加载... –

回答

0

不幸的是,VS崩溃,但你可能会找到解决办法。

最好先启动调试会话。或者当进程在消息框或其他输入上被阻止时,使用“附加到进程”。也更好地使用断点。

使用__debugbreak()或强制访问冲突尝试询问VS的新实例不是现有的实例。

相关问题