代码之家  ›  专栏  ›  技术社区  ›  TcKs

有.NET Reflector Pro的经验

  •  8
  • TcKs  · 技术社区  · 15 年前

    有没有人有.NET Reflector Pro(非免费版本)的经验?

    我已经找到了在外部环境(例如办公室外的生产服务器)中轻松调试应用程序的方法,我发现 .NET Reflector Pro 它的特性是“单步执行反编译的程序集,并使用您将在自己的代码上使用的所有调试技术”。

    它看起来很有用,但我想听听关于这个工具的个人经验…尤其是那些“每天”使用它的人。

    谢谢!

    编辑: 一些附加信息:我想使用此功能来调试模块化应用程序的旧版本(多个版本中有100多个模块),以防在测试环境中无法重现的错误(例如数据库中的数据组合、服务器/客户机的当前配置等)。

    有一种方法可以重建指定的程序集(有时需要几十个程序集)…添加一些特定于问题的日志记录信息。但是,它需要很长的时间,而不是很容易地调试和查看诸如局部变量、字段、线程等内容。

    7 回复  |  直到 13 年前
        1
  •  6
  •   cplotts    14 年前

    刚穿过这根柱子…但我确实有.NET Reflector Pro的经验。总的来说,调试功能有时确实可以节省您的时间(即帮助您解决问题)。

    事实上,我最近写了一篇博客 post 关于如何使用.NET Reflector Pro调试.NET框架源代码。这篇文章绝对会让你了解我使用这个工具的一些经验。

    http://www.cplotts.com/2011/01/14/net-reflector-pro-debugging-the-net-framework-source-code/

    我还想说,您可能很难找到每天都使用调试功能的人。只有当我必须调试(或深入了解)非常困难的问题时,才使用它,这些问题可能不在我自己的代码中,而是在.NET框架或某些第三方程序集中。

    有些人可能会说,“为什么不直接使用Visual Studio的本机支持?”嗯,我…如果可以的话,但不是每个组件都得到支持。此外,有时发布的位会随着微软公共符号服务器上的可用内容而过时…也就是说,即使是受支持的程序集也不受支持 在某些时候 .

    当然,.NET Reflector Pro还允许您调试第三方程序集,因为您无法访问.pdbs和/或源代码。在这种情况下,我的博客文章也会很有帮助。文章是一个非常通用的“如何”使用调试功能的文章。

    要指出/强调的一件显而易见的事情(正如其他人已经指出的那样)是.NET Reflector Pro的调试功能只能在Visual Studio中使用。因此,必须在尝试调试的计算机上安装Visual Studio。大多数生产环境在这些机器上没有(或允许您安装)开发环境。因此,在特定的场景中甚至不可能使用.NET Reflector Pro。

    .NET Reflector的免费版本只需要复制到某个地方,它就可以工作,所以您可以(至少)分析(但不调试)您感兴趣的程序集。

        2
  •  7
  •   Brian Rasmussen    15 年前

    它看起来确实很酷,但我怀疑它是否经常有用。

    大多数时候,这个bug可能在我自己的代码中,我有源代码、pdbs和lot,所以我不需要reflector。使用调试Microsoft框架代码的选项,我也不需要使用Reflector Pro。因此,Reflector Pro的用例似乎是在调试第三方库。很明显,这些将不时地成为一些错误的来源,在这些情况下,Reflector Pro可能会物有所值。

    但是,它添加的“唯一”功能是能够无缝地调试它们。您仍然可以使用普通版的Reflector来查看代码。根据我的经验,这在大多数情况下已经足够了。

    我承认我在这里可能是错的,但我的直觉是免费版对很多用户来说已经足够了。在任何情况下,我都不会急于为那个特定的功能支付200美元。

        3
  •  3
  •   cplotts    14 年前

    在您发布的链接中,写到“net reflector pro是Visual Studio的一个插件,它允许您调试第三方代码和程序集,即使您没有源代码。”

    所以,您只能在开发机器上使用它…因为我怀疑用户在生产机器上有Visual Studio。

        4
  •  1
  •   erlando    14 年前

    我使用.NET Reflector Pro并使用 “单步执行已分解的程序集,并使用将在自己的代码上使用的所有调试技术” 功能相当强大。下面是几个例子:

    Citrix XenServer:

    我们使用Citrix XenServer并使用C Xen API自动化许多进程。有时,文档中并不清楚如何最好地使用API来执行某些功能(如快照管理)。

    Citrix XenServer附带一个名为Xencentre的管理前端。Xencentre是一个.NET Windows窗体应用程序,主要依赖于XenAPI和SDK工具。虽然该应用程序不是开源的,但它们并没有混淆它。我使用Reflector Pro逐步进入他们的代码,设置断点等,以便更好地理解XenAPI。

    这对我来说是一个非常有用的工具,非常值得(事实上,我是在他们有报价的时候买的,所以只花了我46.00欧元)。由于这个特性,我节省了无数的时间,而不仅仅是让代码的静态反汇编视图(ala vanilla.net reflector)用于工作,或者等待他们的支持团队(他们非常优秀,但“教人钓鱼”…)或在他们的论坛上回答问题。

    IIS元数据库资源管理器1.6:

    另一个很好的例子就是iis6元数据库浏览器1.6工具。我需要了解如何从.NET应用程序调用IIs6ABO(管理基对象)COM API。幸运的是,这个版本的元数据库浏览器是一个.NET Windows窗体应用程序,在ABO API周围有一个托管的互操作包装器。

    使用“单步执行”功能,我能够了解如何使用.NET中的ABO API、设置断点、检查活动变量等。同样,这使我在相当艰难的任务中节省了几个小时(ABO API并没有很好的文档或友好的文档)。

    总之,除非你真的需要去查别人的代码 您需要能够设置断点并在运行时查看应用程序的状态,那么基本工具就可以满足您的需要了。然而,更常见的情况是,我发现自己需要了解应用程序或库实际在做什么,它是“活动”状态。如果不了解Redgate最新的.NET Reflector滑稽动作的是非曲直,从雇佣兵的角度来看,它是非常有用的。

        5
  •  1
  •   Kit    13 年前

    我发现我不经常调试编译的程序集,但是当我需要这样做时,它通常会在两天的时间内发生,我相信,没有它会导致日历时间加倍。

    有时,Reflector Pro需要一段时间来扫描程序集以进行调试会话,但这种状态是保持不变的,这很好,扫描是在后台进行的。

    我在查找程序集Reflector Pro的Visual Studio错误窗口中出现的错误已被反编译的问题时看到了您的帖子。这些对我的应用程序开发没有意义(并且不会阻止应用程序编译),但是会给这个窗口增加一些混乱。经过更多的研究,这可能是另一个问题。

        6
  •  1
  •   mizuki    13 年前

    在反汇编的库中进行调试,在某些SharePointSPFieldUser中搜索奇怪的行为时,省去了我的麻烦。我花了几天时间研究它,如果没有能力跨过控制生命周期并查看哪些属性影响特定阶段的行为,我就无法确定地解决它。真是救命恩人!

        7
  •  0
  •   Jason Haley    15 年前

    您可以在Red Gate关注产品的论坛上提问: http://www.red-gate.com/messageboard/viewforum.php?f=85

    推荐文章