有一个执行 C# 脚本并能够处理 DLL 文件(我的类库)的外部工作流。
是否可以将调试附加到我的类库项目,以便一旦此 WF 调用它就会命中断点?
谢谢
最佳答案
是的,您可以使用 Visual Studio 执行此操作。您有两个选择:
配置您的项目以启动外部程序
打开您的 DLL 项目。
在项目的属性中,转到调试选项卡。
选择启动外部程序,并提供将调用您的 DLL 的外部程序的路径,以及您可能需要提供的任何命令行参数,如果是,则提供工作目录相关。
保存项目。
在代码中需要的地方设置断点。
按 F5 开始调试。 (此时,您的断点会说它们不会被击中,因为符号未加载。暂时不要担心。)
尽您所能使外部应用程序加载您的库并运行您的代码。
Visual Studio 将检测模块加载、加载符号并在断点处停止。
附加到现有进程
如果您无法启动该进程,而是必须附加到一个已经在运行的进程,您也可以这样做:
(旁注:如果您使用的是 Visual Studio 的“Express”版本,我认为它没有此功能,但我不确定。很容易判断:您将拥有下面第 4 步中提到的菜单项。)
确保进程正在运行。
打开您的 DLL 项目。
设置断点等
从调试菜单中,选择附加到进程...
在出现的对话框中,在列表中找到进程,突出显示它,然后单击附加。
Visual Studio 将进入 Debug模式。 (此时,您的断点会说它们不会被击中,因为符号未加载。暂时不要担心。)
尽一切努力让外部进程加载并运行您的代码。
Visual Studio 将检测外部进程中的模块加载,加载您的符号,并在您的断点处停止。
N.B. 在这两种情况下,如果外部进程从项目的 bin/Debug
文件夹以外的地方加载您的 DLL,您必须确保复制 DLL 每次构建它时到另一个位置(您可以在项目选项中将其设置为自动发生)。否则,Visual Studio 将无法检测到正在加载的 DLL 就是您要调试的 DLL。
关于c# - 如何调试从外部应用程序调用的类库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672751/