注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

指南针的天空

你永远也看不到我最寂寞时候的样子,因为只有你不在我身边的时候,我才最寂寞。

 
 
 

日志

 
 

转 Use Deblector to debug application to get pseudo source debugging experience 收藏  

2010-08-06 22:51:21|  分类: C# .NET WinForm |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

有的时候,你可能需要调试一段没有源代码的程序,或者说你有的时候想单步 跟踪到.NET Framework里面的一 些函数去看看为什么调用会失败。如果你这个需要的话,可以试一下Deblector,它将Reflectormdbg.exe的 威力结合起来为你提供次源代码级别的调试体验。

 

You may already have experiences with debugging an application without source code available, or failed to step into .NET framework code whiling debugging your program’s defects. In this case, you may try deblector, it combines the power of Reflector and mdbg.exe to supply pseudo source debugging experience.

你可以去下面这个地方下载deblectorReflector

Please download deblector and reflector from the following place:

Deblector:  http://www.codeplex.com/deblector

Reflector: http://reflector.red-gate.com/

 

这 里,我向你演示如何使用Deblector调试XamlPad.exe,假设你把Deblector解压到C:\Deblector文件夹。

In this article, I’ll try to show you how to debug XamlPad.exe by using Deblector. Let’s assume that you extract Deblector and save the bits in C:\Deblector folder.

1.       启动Reflector,单击菜单栏里面的“ViewAdd Ins”。

1.       Launch reflector, and click “View” – “Add Ins” commands in the menu bar, which brings up “Add-Ins” dialog.

2.       在弹出的“Add Ins”对话框里面单击“Add”来加载Deblector插件。

2.       Click “Add” button and select file “C:\Deblector\DeblectorAddIn\DeblectorAddIn\bin\Debug\DeblectorAddIn.dll”.

3.       下面 是加载后的效果图:

3.       The result should look like the following picture:

 

 

4.       关闭“Add Ins”对话框,接着单击Reflector菜单栏里面的“ToolsDeblector”来打开Deblector插件。

4.       Close “Add-Ins” dialog. And click “Tools” – “Deblector” on Reflector’s menu bar. This will display Deblector’s UI.    

5.       Deblector里面的“Command”文本框里面输入mdbg命令r “C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\XamlPad.exe”。千万不要忘记命令里面的r和引号,J

5.       Enter command r “C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\XamlPad.exe” in “Command” text box. DO NOT miss the leading “r” mdbg command and quotes. And then press enter.

6.       XamlPad.exe启动以后,在Reflector左边的Class Members树里面找到XamlPad.XamlPadPage.RefreshButtonClicked函数双击参看它的代码。

6.       After the XamlPad.exe is launched, navigate to Main method of XamlPad.exe in “Class Members” tree view in the left side of Reflector. Find “XamlPad.XamlPadPage.RefreshButtonClicked” method and double click it.

7.       Deblector里面点击Pause按钮中断XamlPad的执行。

7.       Click “Pause” button in “Deblector” window.

8.       切换到IL View窗口,在里面找到一行IL代码,通过按红色按钮,或者点击F9设置一个断点。现在你还只能在IL代码里面设置断点,不能直接在返回编出来的C#代码里面设置断点,因此你需要通过阅读Reflector反汇编的C#代码来猜测设置IL断点的位置。

8.       In “IL view” tab in Deblector window, set a breakpoint in an appropriate position by clicking the red cycle button (or press F9 on keyboard), you can view the decompiled C# source code from “Disassembly” tab and guess while to set the breakpoint in “IL view” tab.      

9.       断点设置好了以后,切断到XamlPad程序,点击Refresh按钮,这时触发断点,你可以在DeblectorAuto窗口查看一些局部变量的值,在Call Stack里面查看堆栈信息,通过Module窗口查看加载进来的Assembly,而Quick View窗口的功能和Visual Studio“监视”窗口的功能是一样的。

9.       Switch back to XamlPad.exe and click “Refresh” button. Then you can examine values of some variables in “Auto” window, call stacks in “Calls” window, and check the loaded modules in “Modules” window. The “Quick View” window provides similar functionalities like “Watch” window in visual studio 2008.

     

  评论这张
 
阅读(241)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018