【问题标题】:Debugging a .Net Library providing a dll file external to the VS solution调试 .Net 库,提供 VS 解决方案外部的 dll 文件
【发布时间】:2014-07-29 11:06:17
【问题描述】:

我正在使用负载模拟性能工具,该工具使用 .NET 4.5 中的用户脚本。
该工具创建一个 Visual Studio 解决方案(VS2012 express)。 我想使用断点调试脚本,但我不能,因为在执行测试工具时,解决方案被编译并且 DLL 文件被复制到解决方案目录树之外的位置。

例如:

负载模拟工具创建的工作区位于:

c:\加载项目\myProject

Visual Studio 解决方案保存在其目录树中:

c:\Load Projects\myProject\repository\VSSolution

但是当我开始负载模拟时,VS解决方案被编译并将内容复制到一个临时目录:

c:\loadCache\myProject

有没有办法调试位于 VS 解决方案之外的 DLL;给VS调试DLL的位置?

【问题讨论】:

  • 您是否也忘记复制 PDB 文件?使用 Debug + Windows + Modules 窗口获取信息。您可以右键单击 DLL 并选择“符号加载信息”以找出调试器查找符号的位置。

标签: c# debugging visual-studio-2012 dll


【解决方案1】:

确保在脚本项目中设置构建属性以生成调试信息(pdb 文件)。您可能需要在 Debug 和 Release 版本上进行设置。确保将 pdb 文件与同时构建的 dll 一起复制到临时目录。 pdb 包含用于创建它们的源代码的位置。

当您开始模拟时,您需要将 Visual Studio 调试器附加到正在执行您的脚本的模拟器进程(请参阅http://msdn.microsoft.com/en-us/library/3s68z0b3(v=vs.110).aspx)。 (您可能需要将“附加到”设置为托管代码)。这应该使您能够调试脚本。

【讨论】:

    【解决方案2】:

    如果您有权访问该项目,那么您通常所做的是将 VS 引用从 .dll 更改为该项目。

    如果您不这样做,则没有开箱即用的解决方案,但几乎所有解决方法都涉及使用外部工具。
    一种是use Resharper.allows you to debug 3rd party dlls.
    其他方法是使用 .NET Reflector 我认为可以免费找到第 6 版。

    除此之外,你运气不好。

    【讨论】:

    • 我确实有权访问该项目。但是编译后的代码是从另一个位置执行的
    • @HelioSantos 只需从编译的地方复制 pdb 文件,然后将它们放入带有 dll 的目录中。
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多