【问题标题】:Debugging referenced DLL in Visual Studio在 Visual Studio 中调试引用的 DLL
【发布时间】:2016-03-16 09:38:27
【问题描述】:

我在 Visual Studio 中有多个项目(让我们称之为 MyLibrary),其中包含我在其他项目中使用的许多漂亮的函数和类。我直接添加了对MyLibrary.dll 的引用,而不是项目本身。

但是,当我运行其他项目之一时,我现在需要通过 MyLibrary 中的某些内容来断点。如何按照我设置项目的方式调试我的 dll?我知道我之前在这些项目中做过,但是由于我没有做任何特别的事情,所以我不知道缺少什么。

我已经关闭了 Just-my-code 并遵循了一些类似的提示,但我还没有进入 .pdb's。如果我需要调试另一个 DLL,我将不胜感激有关如何从 MyLibrary 导出它的一些信息。

【问题讨论】:

  • 你不能,除非你有调试符号和源代码。没有调试符号,您将无法看到其他库的方法、符号、设置断点(进入 IL)等。没有源代码,您将只能查看 IL
  • 我确实拥有源代码,但似乎我没有任何调试符号。
  • 在构建项目时会生成调试符号。你会在你的 bin/debug 文件夹中找到它们
  • 我在obj 文件夹中找到了一个pdb。我的 bin/debug 文件夹没有。

标签: c# .net visual-studio visual-studio-2013


【解决方案1】:

在调试时,检查 Debug/Modules,如果您的 dll 符号已加载。如果没有,让他们加载。可能会要求您使用 pdb 文件设置文件夹。 pdb 包含用于调试的符号。它必须与您在项目中使用的 dll 文件的版本相同。之后你就可以调试这个库了。

【讨论】:

  • 我没有.pdb for MyLibrary,这可能是这里的问题之一。 Debug/Modules 说 Binary was not built with debug information,因此不会为该 dll 加载符号。
  • @Phil 然后用调试信息重建它。您甚至可以为发布 DLL 生成调试符号
  • @PanagiotisKanavos 很抱歉打扰您,但我还没有找到一种方法来加载带有 dll 的 pdb 文件。如果我尝试在 Debug/Modules 中“手动”加载它,当我选择 obj 文件夹中的 pdb 时,它会说 A matching symbol file was not found in this folder。它也有相同的时间戳,所以我知道它是匹配的。您还有什么建议吗?
  • 你必须在调试模式下编译你想调试的库(更确切地说是生成符号),然后在你正在调试的另一个项目中重新加载 dll。检查调试选项中是否包含托管(v4.5 或您正在使用的)。
【解决方案2】:

您可能需要转到 DLL 的属性,并确保将 Copy Local 设置为 True。否则,Modules 将无法找到 .pdb 供您参考

如果这没有帮助,您可以尝试使用调试模式重建外部库,然后手动将 .dll 和 .pdb 文件复制到应用程序的 bin。

【讨论】:

  • 我可以确认复制本地设置为真我的参考。
  • 您可以尝试使用调试模式重建您的外部库,然后手动将 .dll 和 .pdb 文件复制到您应用的 bin。
  • 我在obj 文件夹中找到了MyLibrary.pdb。它不会自动为我的其他项目在本地复制,但我尝试将其复制到 bin 文件夹,但没有成功。不过,仍在使用 MyLibrary 的发布版。
  • 您是否添加了您的 dll 作为对您项目的引用?如果没有 - 试试那个。
猜你喜欢
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
相关资源
最近更新 更多