【问题标题】:Attach Visual Studio debugger to multiple DLLs将 Visual Studio 调试器附加到多个 DLL
【发布时间】:2016-03-26 03:40:58
【问题描述】:

我正在使用 Visual Studio Ultimate 2013 同时开发几个本机 C++ DLL。

这些 DLL 是应用程序的插件。我已经配置了 Visual Studio 的调试器,它可以启动该应用程序(它反过来加载我的插件)并附加到它。

由于这些插件应该一起工作,我想一起调试它们,在它们中放置断点等等。

有没有办法做到这一点?

Running two projects at once in Visual Studio 中描述的解决方案似乎不适用于这里。

【问题讨论】:

  • 你调试的是一个进程,而不是一个 DLL。一旦你让进程运行,那么可以调试由该进程加载的任何 DLL。一旦包含代码行的 DLL 被加载,您设置的断点就会被启用。这是非常容易发现的,很难猜出你为什么会遇到问题。请务必使用调试器的 Debug > Windows > Modules 窗口来确保您看到 DLL。并在那里仔细检查是否可以找到 DLL 的 .pdb 文件。右键单击列表中的 DLL,然后选择“符号加载信息”。
  • 谢谢汉斯,看来你是对的。出于某种原因,在我之前的尝试中,不是启动项目的 DLL 中的断点从未处于活动状态。它现在似乎工作正常。

标签: c++ visual-studio debugging visual-studio-2013


【解决方案1】:

我在首次使用 DLL 时所做的是在 Visual Studio 中打开 DLL 的调试版本,并确保调试版本是由调用应用程序加载的版本。我启动调用应用程序,并通过设置断点或显示警报来暂停它。然后返回到 DLL 的 Visual Studio,并从“调试”菜单中选择“附加到进程”。选择调用应用程序的进程。此时,您应该能够在 Visual Studio 中的 DLL 中设置断点。完成后,您可以继续运行调用应用程序。我建议您在执行此操作时在 VS 中打开您正在处理的每个 DLL。

【讨论】:

  • 谢谢。我所做的是选择一个 DLL 作为启动项目,并使用主机应用程序的可执行文件作为调试命令。该应用程序配置为在启动时自动加载我的插件。正如 Hans 上面所说,只要它们被宿主应用程序加载,就无需在多个 DLL 中设置断点。
猜你喜欢
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多