11

我正在使用第三方框架,代码很糟糕,而且我遇到了我无法弄清楚的异常。我能够使用.NET Reflector进行反编译,现在我正在尝试使用Deblector进行调试,但我什至无法弄清楚如何设置断点。为什么没有此工具的文档?

没有关于如何使用它的信息。内置帮助只是提供了一个命令列表,我理解得很好,因为它们是标准的调试器命令......但我不知道如何让它工作,所以我可以单步执行代码,我需要也检查变量。

我在谷歌上搜索了很长时间,我能找到的只是博客说这个工具有多棒。好吧,我敢肯定,如果我能让它发挥作用,那将是非常酷的。文档在哪里,或者我如何设置断点?

我可以让它附加到我的进程中,但我不能暂停或任何事情,即使我已经激活了该选项,当异常发生时它也不会中断。

说真的......我们应该做一些文档 - 我会将它们发布到谷歌可以到达的地方。

4

2 回答 2

8

也许这会帮助你:

首先,我正在使用来自http://www.codeplex.com/deblector的DeblectorAddin-1.01-Alpha(我不知道它在旧版本中是否也这样工作)。

使用此版本,使用以下过程非常简单:

  • 附加到进程

    • 在命令行中使用a[ttach]命令: a <pid>
    • 使用工具栏中的附加按钮(带有齿轮的窗口)。
  • 如果附加成功(您在控制台中看到这一点,使用 Tools->Deblector 激活)应该加载所有引用的程序集。

  • 设置断点(您必须暂停程序才能设置断点):

    • 使用b[reak]命令:例如b <Namespace.Class.Function> - 有更多可用的选项使用帮助 b
    • 简单得多:使用 Break 按钮(或F9)并在 Deblector IL视图中选择一行。

附加使用说明:

Deblector 命令行:
如果您当前附加到某个进程并正在运行,则命令行将不会响应,您必须先停止,否则它将无法正确响应。

对于 64 位平台:
应用程序必须设置为作为 32 位应用程序运行,否则无法附加。

在 Visual Studio 中:项目 -> 属性 -> 构建平台目标:x86

使用corflags工具:这应该与 Visual Studio 一起安装(使用 Visual Studio 命令提示符)。

 To set 32-bit mode: corflags <ProgramName> /32BIT+ 
 To unset it:        corflags <ProgramName> /32BIT-

要查找进程 ID 并检查程序是否以 32 位或 64 位模式运行
Process Explorer对此非常有帮助。

于 2009-04-18T15:29:23.777 回答
0

现在有 Reflector Pro,它就是这样做的。它将托管程序集反编译为 C# 或 VB.NET,并创建必要的 PDB。然后,您可以设置断点并单步执行您喜欢的任何托管程序集。

http://www.red-gate.com/products/reflector/walkthrough.htm

于 2010-07-05T10:03:09.070 回答