【问题标题】:Does nuget package contain pdb symbolsnuget 包是否包含 pdb 符号
【发布时间】:2015-05-08 05:57:08
【问题描述】:

我包含了一个 NuGet 包 (Edge.js),我想通过单步调试源代码来调试它。当我“介入”时,它“跨过”。我猜这是因为没有符号文件可以介入。可能 EdgeJS 包是在没有来源的情况下发布的,这可能是原因。但是我不知道如何验证 NuGet 包是否包含 pdb 符号。

也可能是我失败了configuration of Visual Studio,但因为我不知道 NuGet 包是否包含我不知道怎么看的符号。

感谢您的帮助

【问题讨论】:

  • 你应该提到 Edje.js 不是一个 javascript 框架/库,尽管它的名字。
  • 另一个问题揭示了为什么它不可用以及如何通过 symbolsource.org 或其他stackoverflow.com/questions/13488280/…

标签: visual-studio nuget


【解决方案1】:

Nuget 支持使用nuget pack -Symbols 命令创建包含 PDB 和源文件的包。通常,这些包被上传到 symbolsource.org 用于开源项目。 Visual Studio 可以配置为在调试期间使用 symbolsource.org,请参阅this guide

但是,并不是每个开源项目都会将符号包上传到 symbolsource.org,所以你必须检查 Edge.js 是否会(我不知道那个库)。

如果 Edge.js 不提供符号包,你的选择如下:

  • 下载 edge.js 源代码并使用调试符号在本地构建。将 DLL 和 PDB 复制到应用程序的输出文件夹并开始调试。
  • 使用反编译器。您没有获得与调试符号和源文件一样多的信息,但它可能足以满足您的情况。 Resharper(商业工具)附带的反编译器对于以这种方式调试 DLL 非常有用。

【讨论】:

    【解决方案2】:

    如果您没有源代码,则无法“步入”任何内容。在这种情况下,调试符号无济于事。

    您只能通过使用第三方工具(如 RedGate 的 Reflector 或 Telerik 的 JustCode)即时反编译 IL 并生成用于查看目的的 C# 代码,才能进入反编译的代码。这些工具不需要调试符号来工作,尽管它们可以使用它们使反编译的代码更美观。

    【讨论】:

    • 好的,这太棒了,但是对于可用的资源,这不是必需的。此外,反编译的质量可能不太可读。
    • 你的意思是你有 Edge.js 的源代码?那是一个不同的问题,与 NuGet 无关 - 当您没有附带的调试符号时,如何使用步入源代码?您会找到很多答案,但简短的版本是 - 如果它是发布版本,则您不能,因为所有调试信息(如源代码引用)都已删除。如果是调试版本,您只需将 VS 指向源文件的位置即可
    • 对,所以问题首先在于我使用的发布版本没有包含调试信息。我是 C# 新手,看到这在 java/maven 中很容易实现,有点惊讶。
    • 其实也差不多,见here。您也可以在发布版本中包含调试信息。包通常包含调试信息/符号以减小包大小,但这取决于作者。
    猜你喜欢
    • 2018-12-08
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 2017-06-02
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多