c# - 如何调试从外部应用程序调用的类库?

标签 c# visual-studio debugging visual-studio-debugging class-library

有一个执行 C# 脚本并能够处理 DLL 文件(我的类库)的外部工作流。

是否可以将调试附加到我的类库项目,以便一旦此 WF 调用它就会命中断点?

谢谢

最佳答案

是的,您可以使用 Visual Studio 执行此操作。您有两个选择:

配置您的项目以启动外部程序

  1. 打开您的 DLL 项目。

  2. 在项目的属性中,转到调试选项卡。

  3. 选择启动外部程序,并提供将调用您的 DLL 的外部程序的路径,以及您可能需要提供的任何命令行参数,如果是,则提供工作目录相关。

  4. 保存项目。

  5. 在代码中需要的地方设置断点。

  6. 按 F5 开始调试。 (此时,您的断点会说它们不会被击中,因为符号未加载。暂时不要担心。)

  7. 尽您所能使外部应用程序加载您的库并运行您的代码。

Visual Studio 将检测模块加载、加载符号并在断点处停止。

附加到现有进程

如果您无法启动该进程,而是必须附加到一个已经在运行的进程,您也可以这样做:

(旁注:如果您使用的是 Visual Studio 的“Express”版本,我认为它没有此功能,但我不确定。很容易判断:您将拥有下面第 4 步中提到的菜单项。)

  1. 确保进程正在运行。

  2. 打开您的 DLL 项目。

  3. 设置断点等

  4. 调试菜单中,选择附加到进程...

  5. 在出现的对话框中,在列表中找到进程,突出显示它,然后单击附加

  6. Visual Studio 将进入 Debug模式。 (此时,您的断点会说它们不会被击中,因为符号未加载。暂时不要担心。)

  7. 尽一切努力让外部进程加载并运行您的代码。

Visual Studio 将检测外部进程中的模块加载,加载您的符号,并在您的断点处停止。


N.B. 在这两种情况下,如果外部进程从项目的 bin/Debug 文件夹以外的地方加载您的 DLL,您必须确保复制 DLL 每次构建它时到另一个位置(您可以在项目选项中将其设置为自动发生)。否则,Visual Studio 将无法检测到正在加载的 DLL 就是您要调试的 DLL。

关于c# - 如何调试从外部应用程序调用的类库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672751/

相关文章:

c# - 缓存 session 工厂

c# - Azure 应用服务在执行检索时抛出未找到数据库的错误

android - 如何调试 Android Native 崩溃日志(可能是多个 webview 问题)?

c# - 调试时,有没有办法判断一个对象是否是不同的实例?

debugging - 使用 openocd 闪存和调试 STM32F7 发现

c# - MVC5 通过 Jquery Ajax 返回通用对象列表

c# - 为什么我会收到此定义引用错误?

c++ - Natvis 用于可编译为 dll 或 lib 的类型

visual-studio - 从 visual studio 查看和搜索你的库 doxygen

visual-studio - 如何将 AnkhSVN 中的解决方案更新到最新版本?