基本上,我正在开发一个DLL(一个开放接口),供第三方软件使用。我想在第三方DLL加载后调试我的DLL,因为我发现了一个特定的错误,只有当我的DLL被第三方软件加载时才会发生(我的DLL适用于所有其他接受此开放接口的软件)
我在代码DLL中设置了__debugbreak()并运行第三方软件。Visual studio确实弹出了一个对话框,询问我是否要调试。。但在我单击"确定"后,visualstudio并没有进入显示我设置断点的代码行的visualstudio窗口,而是崩溃了。
我发现第三方软件加载了我的DLL并在另一个线程中运行它。我怀疑这就是第三方软件崩溃的原因,因为__debugbreak()有效地在主线程启动的线程中抛出了一个未捕获的exeception。
在这种情况下,如何调试DLL?
VS崩溃很不幸,但您可能会找到解决问题的方法。
最好提前开始调试会话。或者,当进程在消息框或其他输入中被阻止时,使用"附加到进程"。还可以更好地使用断点。
使用__debugbreak()或强制访问冲突,尝试询问VS的新实例,而不是现有实例。