如何附加到加载我的DLL并调试它的进程

how to attach to a process that loads my DLL and debug it

本文关键字:调试 进程 DLL 何附加 加载 我的      更新时间:2023-10-16

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

我在代码DLL中设置了__debugbreak()并运行第三方软件。Visual studio确实弹出了一个对话框,询问我是否要调试。。但在我单击"确定"后,visualstudio并没有进入显示我设置断点的代码行的visualstudio窗口,而是崩溃了。

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

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

VS崩溃很不幸,但您可能会找到解决问题的方法。

最好提前开始调试会话。或者,当进程在消息框或其他输入中被阻止时,使用"附加到进程"。还可以更好地使用断点。

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