从 Visual Studio 中的 DLL 项目进行调试(C#、C++、Visual Basic、F#)

调试 DLL 项目的一种方法是在 DLL 项目属性中指定调用应用。 此方法允许你从 DLL 项目本身开始调试。 若要使此方法正常工作,应用必须在配置时所在的同一位置调用同一 DLL。 如果应用程序找到并加载了不同版本的 DLL,该版本将不包含您的断点。 有关调试 DLL 的其他方法,请参阅 调试 DLL 项目

如果托管应用调用本机 DLL,或本机应用调用托管 DLL,则可以同时调试 DLL 和调用应用。 有关详细信息,请参阅 如何:在混合模式下调试

本机和托管 DLL 项目具有不同的设置来指定调用应用。

在本机 DLL 项目中指定调用应用

  1. 解决方案资源管理器中,右键单击C++ DLL 项目并选择 “属性 ”(Alt+Enter)。

  2. <“项目> 属性页 ”对话框中,将顶部的 “配置 ”字段设置为 “调试”。

  3. 选择 配置属性>调试

  4. 展开 调试器以启动 列表,然后选择 “本地 Windows 调试器 ”或 “远程 Windows 调试器”。

  5. “命令 ”或 “远程命令 ”框中,添加调用应用的完全限定路径和文件名,例如 .exe 文件。

    Visual Studio 中“调试属性”窗口的屏幕截图,其中显示了命令的值。

  6. 将任何必要的程序参数添加到 “命令参数 ”框。

  7. 选择“确定”

在托管 DLL 项目中指定调用应用(.NET Core、.NET 5+)

  1. 解决方案资源管理器中,右键单击 C# 或 Visual Basic DLL 项目,然后选择 “属性 ”(Alt+Enter)。

  2. 在“调试”选项卡中,选择打开调试启动配置文件用户界面

  3. “启动配置文件 ”对话框中,选择“ 创建新配置文件 ”图标,然后选择“ 可执行文件”。

    用于在 Visual Studio 2022 中创建新的调试配置文件的 UI 的屏幕截图。

  4. 在新配置文件的 “可执行文件”下,浏览到可执行文件的位置(.exe 文件),然后选择它。

  5. “启动配置文件 ”对话框中,记下默认配置文件的名称,然后选择配置文件并将其删除。

  6. 将新配置文件重命名为与默认配置文件相同的名称。

    另一种方法是手动编辑 launchSettings.json 文件。 希望 launchSettings.json 文件中的第一个配置文件与类库的名称匹配,并且希望该配置文件在文件中作为第一个列出。

在托管 DLL 项目中指定调用应用 (.NET Framework)

  1. 解决方案资源管理器中,右键单击 C# 或 Visual Basic DLL 项目,然后选择 “属性 ”(Alt+Enter)。

  2. 将顶部的 “配置” 字段设置为 “调试”。

  3. 启动操作下:

    • 对于 .NET Framework DLL,请选择 “启动外部程序”,并添加调用应用的完全限定路径和名称。

    • 或者,选择 使用 URL 启动浏览器,并输入本地 ASP.NET 应用的 URL。

    • 对于 Visual Basic 中的 .NET Core DLL, “调试 属性”页不同。 展开 “启动 ”下拉列表并选择 “可执行文件”,然后在 “可执行文件 ”字段中添加调用应用的完全限定路径和名称。
    • 对于 .NET Core DLL, “调试 属性”页不同。 展开 “启动 ”下拉列表并选择 “可执行文件”,然后在 “可执行文件 ”字段中添加调用应用的完全限定路径和名称。
  4. 命令行参数应用程序参数 字段中添加任何必需的命令行参数。

    Visual Studio 中 C# “调试属性”窗口的屏幕截图。

  5. 若要保存更改,请选择“ 文件>保存所选项目 ”(Ctrl+S)。

从 DLL 项目调试

  1. 在 DLL 项目中设置断点。

  2. 右键单击 DLL 项目,然后选择“ 设置为启动项目”。

  3. 将顶部 的解决方案配置 字段设置为 “调试”。 选择 F5 ,然后选择绿色 的“开始” 箭头,或选择“ 调试>开始调试”。

小窍门

  • 如果调试未命中断点,请确保 DLL 输出(默认情况为 <project>\Debug 文件夹)是调用应用进行调用的位置。

  • 如果要从本机 DLL 中断托管调用应用中的代码,或进行相反的转换,请启用混合模式调试

  • 在某些情况下,可能需要指示调试器在何处查找源代码。 有关详细信息,请参阅 “无符号加载/无源加载”页