【问题标题】:Resharper debugging a third party decompiled dllResharper 调试第三方反编译的 dll
【发布时间】:2012-03-29 18:51:05
【问题描述】:

有没有办法使用 Resharper 调试到反编译的 dll 中,如果有,你如何做到这一点?

例如,我正在尝试调试到 System.Web.Http.ApiController 我已经反编译并可以看到源代码的地方。

我已经设置了一个断点,但是当我运行应用程序时,它在调试时并没有进入反编译的断点。

【问题讨论】:

  • 您是否已经查看过 Visual Studio 调试选项(工具->选项->调试->常规)。例如。 Enable Just My Code (Managed Only) 应该被禁用。
  • ReSharper 6 有一个自动反编译功能:jetbrains.com/resharper/webhelp/…> 也许反编译的源代码就足够了。
  • 请更改接受的答案。

标签: .net debugging resharper


【解决方案1】:

据我所知,无法使用 Resharper(最高 v6.1)调试反编译的 .net 源代码

但是,this article 解释了如何使用 Visual Studio 2010 调试到 .net 源代码 - 如果您需要其他版本的 VS 的说明,只需使用页面顶部的“其他版本”链接。

【讨论】:

【解决方案2】:

您需要有相应的*.pdb 文件才能单步执行代码。

否则,使用例如反编译二进制文件可能会有所帮助。 Telerik 免费提供JustDecompile

但您应该注意,这可能违反第三方提供商的许可协议

【讨论】:

    【解决方案3】:

    不,仅使用 Visual Studio 和 ReSharper 是不可能的,但还有另一个产品可以帮助您,.NET Reflector

    VSPro 版本具有“使用 Visual Studio 调试器调试程序集,即使您没有源代码”功能,它允许您为已构建的 .NET 程序集生成 .pdb 文件和反编译源代码。

    根据经验,它在某些程序集上存在一些问题,但我不记得为什么会这样,所以它可能对您有帮助,也可能对您没有帮助。

    使用 ReSharper,您可以从程序集中查看反编译的源代码,这与 Reflector 生成反编译源的方式几乎相同,但您无法使用 ReSharper 使用这些源文件调试代码。

    【讨论】:

      【解决方案4】:

      [全面披露 - 我是 Telerik 员工] 使用 Telerik 的 JustCode 的最新版本,您现在可以在不离开 Visual Studio 的情况下调试反编译的代码。有关更多信息,您可以阅读我宣布该功能 here 的博客文章。

      【讨论】:

      • 这是唯一对我有用的。 .Net Reflector 不断使 Visual Studio 2010 崩溃,Resharper 允许查看反编译的代码,但不能通过它进行调试。
      • 但它并不便宜:)
      【解决方案5】:

      dotPeek 1.2 中引入了调试工具,这是一篇很好的文章,描述了如何配置符号服务器和 dotPeek 1.2 以从 VisualStudio 调试反编译代码:http://blog.jetbrains.com/dotnet/2014/04/09/introducing-dotpeek-1-2-early-access-program

      【讨论】:

        【解决方案6】:

        是的,您可以使用 Resharper 9.0

        (不确定以前的版本)。

        转到菜单“Resharper” > “Windows” > “Assembly Explorer”

        • 在那里添加一个程序集,左侧的第一个按钮(上面带有 +
        • 然后右键单击它并选择“生成 Pdb...”(等到它完成)
        • 现在您可以破解代码了。

        但请注意,正如 Jens 所说,它可能会违反许可条款

        【讨论】:

        • 我写了一篇博文更详细地解释了如何做到这一点:blog.pglazkov.com/2016/02/…
        • 如果您已经在调试,请转到“调试”>“Windows”>“模块”。选择您要调试的程序集并加载之前由 Resharper 生成的“pdb”。
        • 要使用此技巧,您必须在 Visual Studio 的 Call Stack 窗口的堆栈框架的上下文菜单中选择 Show External Code
        • 如果您尝试在反编译的源代码中设置断点并收到以下警告:无法在此位置插入断点。将鼠标光标放在函数名称,然后按 F9
        • @rgb 我遇到了断点问题,但是在选项->调试->常规中勾选“在模块加载时抑制 JIT 优化(仅限托管)”后它们消失了,正如 stackoverflow.com/a/32213614/342838 中所推荐的那样跨度>
        【解决方案7】:

        在“程序集资源管理器”窗口中选择一个程序集,然后单击工具栏上的“导出到项目”,或在上下文菜单中选择“导出到项目”。

        更多信息here

        另外,请检查您在主调试选项页面上是否有此配置(工具 -> 选项 -> 调试 -> 常规):

        取消选中“仅启用我的代码”选项

        取消选中“启用 .NET Framework 源代码步进”选项

        选中“启用源服务器支持”选项

        取消选中“要求源文件与原始版本完全匹配”

        【讨论】:

        • 在尝试了一切之后,这些设置为我做了,谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多