如何附加到加载我的DLL并调试它的进程
how to attach to a process that loads my DLL and debug it
基本上,我正在开发一个DLL(一个开放接口),供第三方软件使用。我想在第三方DLL加载后调试我的DLL,因为我发现了一个特定的错误,只有当我的DLL被第三方软件加载时才会发生(我的DLL适用于所有其他接受此开放接口的软件)
我在代码DLL中设置了__debugbreak()并运行第三方软件。Visual studio确实弹出了一个对话框,询问我是否要调试。。但在我单击"确定"后,visualstudio并没有进入显示我设置断点的代码行的visualstudio窗口,而是崩溃了。
我发现第三方软件加载了我的DLL并在另一个线程中运行它。我怀疑这就是第三方软件崩溃的原因,因为__debugbreak()有效地在主线程启动的线程中抛出了一个未捕获的exeception。
在这种情况下,如何调试DLL?
VS崩溃很不幸,但您可能会找到解决问题的方法。
最好提前开始调试会话。或者,当进程在消息框或其他输入中被阻止时,使用"附加到进程"。还可以更好地使用断点。
使用__debugbreak()或强制访问冲突,尝试询问VS的新实例,而不是现有实例。
相关文章:
- GDB:运行不带符号的 cpp 进程调试
- 如何将LLDB附加到C# .NET进程并调试动态加载的macOS捆绑包?
- 调试卡在_kill进程中
- CLion 没有调试我的目标之一 - 立即"进程已完成,退出代码为 0"
- 调试时 Kubuntu 中的繁忙进程
- 如何在 Linux 上调试本机代码时自动附加到多个子进程
- gdb如何读取它正在调试的程序/进程的寄存器值?寄存器如何与进程相关联?
- 内存中进程的实际起始地址/W32调试API
- XCode 附加进程/分离进程(以编程方式分离调试器)
- visualstudio在调试模式下附加到进程
- 如何在gdb中获取当前调试进程的pid
- 调试 VM 中的进程
- 在 unix 上从 c/c++ 断点/调试其他用户进程
- Visual Studio - 停止调试时终止特定进程 (shift+F5)
- 使用 Eclipse 调试 JNI/C++ 库和进程
- 如何检测进程是否正在调试
- IsDebuggerPresent()函数是停止调试进程的安全方法吗
- 调试器如何查看另一个进程的内存?
- GDB/DDD:使用多进程应用程序 C/C++调试共享库
- 如何附加到加载我的DLL并调试它的进程