【问题标题】:.NET - How to debug a DLL?.NET - 如何调试 DLL?
【发布时间】:2010-04-12 13:09:56
【问题描述】:

我需要调试一个作为 DLL 提供给主项目(ASP.NET 网站)的类库项目。例如,我需要设置一些断点来检查执行过程中发生了什么。

我试过How to: Debug from a DLL Project,可惜没用...

我该怎么做?

PS:我有源代码!

【问题讨论】:

  • 你没有DLL的源代码还是.NET库?
  • @GordonB 我做不到。我需要将它作为外部程序集运行!

标签: asp.net debugging dll


【解决方案1】:

如果您有源代码和 BIN 目录中的 .pdb 文件,那么您可以通过该代码进行调试。但是,您需要在 Visual Studio 中启用外部代码调试。

您需要取消选中“仅启用我的代码”选项:菜单 Tools --> Options --> Debugging --> 启用仅我的代码

注意:这仅适用于.NET 程序集。

【讨论】:

  • 如果您有 PDB 文件和源文件,那么您需要做的就是在调用外部程序集的代码中的某处设置断点。 Visual Studio 将自动拾取符号并加载它们,允许您单步执行代码。如果您没有源文件,那么有些程序可以从 PDB 重建代码的表示。如果您没有 .pdb 文件,事情就会变得更加困难。
  • @Amokrane:您将不得不进入代码。在从 DLL 调用某些方法之前,将调试器放置到代码中的某个位置。按 F11 进入方法。
  • @Josh 这个 pdb 文件在哪里?在调试目录中? @Marek 当我这样做时,它告诉我:当前位置没有可用的源代码
  • 原来我有。但是单步执行代码是不可能的:(
  • 只要 PDB 文件位于调试文件夹中的程序集旁边,它就应该加载符号。如果这没有发生,那么您可以在调试时手动加载它们,方法是转到 Debug > Windows > Modules ---- 右键单击​​ DLL 并选择 Load Symbols From > File Path
【解决方案2】:

Debugging DLLs in Visual Studio(请参阅列表中的 #2)可能是您正在寻找的内容(完全披露:是的,这是我的个人网站)。

  • 使用方法 #1,您无法查看变量。

  • 使用方法#2,步骤#2,如果不能在同一个Visual Studio实例中打开项目,可以运行项目的二进制文件(即在Visual Studio之外运行,但是确保运行调试版本。)并将 Visual Studio 调试器附加到它(菜单 Debug -> 附加到进程)。

这里是方法#2的步骤,所以没有人必须点击链接:

将使用进程附加到 DLL 项目。这涉及将 Visual Studio 调试器挂接到正在运行的进程中。

  1. 在 Visual Studio 中打开 DLL 项目。
  2. 运行使用 DLL 的应用程序。这 应用程序无法运行 Visual Studio 的另一个实例 进程将已经有一个调试器 附在上面。
  3. 您可以从这里添加断点并单步执行 在 Visual Studio 中加载的 DLL 代码(尽管 断点将显示为禁用 同方法一)。

【讨论】:

  • 这正是我想要的!很棒的提示。谢谢!
  • 请提问。我已经尝试了#1,它向我展示了堆栈跟踪,但是如果我想查看我的变量,我该怎么办?我不明白#2。如何在加载 DLL 项目的同一 Visual Studio 实例中运行使用 DLL 的项目?
  • 好的。但我有一个 ASP .NET 项目,所以没有二进制文件!
  • @Amokrane,我没有使用 ASP 的经验,但必须有一些可执行文件调用 DLL。你能附上它看看会发生什么吗?
【解决方案3】:

在构建类库项目时,会在该类库的 DebugRelease 文件夹中创建 .pdb 文件。这两个文件被ASP.NET项目引用,当你右键单击并选择“添加引用”选项并指向类库项目的DLL文件时。

【讨论】:

    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2013-02-27
    • 2011-01-12
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多