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

标签 c++ c debugging debugbreak

基本上,我正在开发一个将由第三方软件使用的 DLL(一个开放接口(interface))。我想在我的 DLL 被这个第三方 DLL 加载后调试它,因为我发现了一个特定的错误,只有当我的 DLL 被这个第三方软件加载时才会发生(我的 DLL 对于接受这个开放接口(interface)的所有其他软件都可以正常工作)

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

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

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

最佳答案

不幸的是 VS 崩溃了,但您可能会找到解决方法。

最好提前开始调试 session 。或者当进程在消息框或其他一些输入上被阻止时使用“附加到进程”。也更好地使用断点。

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

关于c++ - 如何附加到加载我的 DLL 并调试它的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17343800/

相关文章:

c++ - 显示二叉搜索树中节点的路径

c++ - 输入文件行到数组错误

C float 0x1.fp3

c++ - bool 表达式的等价性

python - 中断(暂停)在 pdb 中运行 Python 程序?

c# - C# 中的 Google Protocol Buffer

c - 简单的 TCP 服务器无法输出到 Web 浏览器

c# - 事件查看器中的行号

python - 无法在 VScode 中调试 Python

c++ - 从 Microsoft C++ 读取 RSP 寄存器