8

有没有人使用过 .NET Reflector Pro(不是免费版)?

我已经搜索了一些在外部环境(例如,不在办公室的生产服务器)中轻松调试应用程序的方法,我发现了.NET Reflector Pro及其功能“步入反编译的程序集并使用您所使用的所有调试技术将在您自己的代码上使用”。

它看起来非常有用,但我想听听有关该工具的个人经验......尤其是“每天”使用它的人。

谢谢!

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

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

4

7 回答 7

7

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

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

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

我承认我在这里可能是错的,但我的直觉是免费版对很多用户来说已经足够了。无论如何,我并不急于为该特定功能支付 200 美元。

于 2010-03-01T11:56:30.167 回答
6

刚刚看到这篇文章……但我确实有使用 .NET Reflector Pro 的经验。总体而言,调试功能有时确实可以节省您的精力(即帮助您)。

事实上,我最近写了一篇关于如何使用 .NET Reflector Pro 调试 .NET Framework 源代码的博文。这篇文章肯定会让您深入了解我自己使用该工具的经验。

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

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

有些人可能会争辩说:“为什么不直接使用 Visual Studio 的原生支持呢?” 好吧,我愿意……如果可以的话,但不是每个程序集都受支持。此外,有时发布的位会与 Microsoft 公共符号服务器上可用的内容过时……也就是说,即使是受支持的程序集,在某些时候也不支持。

当然,.NET Reflector Pro 还允许您调试无法访问 .pdb 和/或源代码的第三方程序集。我的博客文章在这些情况下也会有所帮助。该帖子是关于使用调试功能的非常通用的“如何”帖子。

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

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

于 2011-01-21T17:53:39.487 回答
3

在您发布的链接中,写着“NET Reflector Pro 是 Visual Studio 的插件,即使您没有源代码,也可以调试第三方代码和程序集。”

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

于 2010-03-01T11:47:01.753 回答
1

我使用 .NET Reflector Pro 并大量使用“步入反编译程序集并使用您将在自己的代码上使用的所有调试技术”功能。这里有几个例子:

思杰 XenServer:

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

Citrix XenServer 带有一个名为 XenCentre 的管理前端。XenCentre 是一个 .NET Windows 窗体应用程序,它严重依赖于 Xen API 和 SDK 工具。虽然该应用程序不是开源的,但他们没有对其进行混淆。我使用 Reflector Pro 进入他们的代码,设置断点等,这样我可以更好地理解 Xen API。

这对我来说是一个非常有用的工具,而且物有所值(事实上,我在他们有报价时购买了我的,所以它只花了我 46.00 欧元)。由于这个功能,我节省了无数小时,而不仅仅是拥有一个静态反汇编的代码视图(ala vanilla .NET Reflector),或者等待他们的支持团队回答问题(他们非常好,但是“教人钓鱼”....)或在他们的论坛上。

IIS 元数据库浏览器 1.6:

该工具派上用场的另一个很好的例子是 IIS6 Metabase Explorer 1.6 工具。我需要了解如何从 .NET 应用程序调用 IIS6 ABO(管理基础对象)COM API。幸运的是,这个版本的 Metabase Explorer 是一个 .NET Windows 窗体应用程序,带有一个围绕 ABO API 的托管互操作包装器。

使用“步入”功能,我能够了解如何使用 .NET 中的 ABO API、设置断点、检查实时变量等。再一次,这使相当痛苦的事情减少了几个小时任务(ABO API 的文档并不完整或友好)。

总而言之,除非您确实需要查看其他人的代码,并且您需要能够设置断点并在运行时查看应用程序的状态,否则基本工具可能足以满足您的需求。然而,更多时候,我似乎发现自己需要查看应用程序或库实际在做什么以及它处于“实时”状态。无需深入探讨 RedGate 最新的 .NET Reflector 滑稽动作是非,从雇佣兵的角度来看,它非常有用。

于 2011-04-20T08:20:31.570 回答
1

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

Reflector Pro 有时可能需要一段时间来扫描程序集以进行调试会话,但这种状态会一直存在,这很好,并且扫描发生在后台。

我在寻找一个问题时遇到了您的帖子,其中错误显示在 Visual Studio 的错误窗口中,用于 Reflector Pro 已反编译的程序集。这些对我的应用程序开发毫无意义(并且不会阻止应用程序编译),但会给该窗口添加一些混乱。经过更多研究,这可能最终成为另一个 SO 问题。

于 2011-08-09T15:17:08.820 回答
1

在一些 SharePoint SPFieldUser 中搜索奇怪的行为时,在反汇编库中进行调试节省了我的精力。我花了几天的时间来解决它,如果没有能力逐​​步完成控制生命周期并查看哪些属性会影响特定阶段的哪些行为,我肯定无法解决它。真正的救星!

于 2011-09-02T14:14:01.320 回答
0

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

于 2010-03-01T12:42:54.083 回答