-
Recent Posts
Recent Comments
Mr WordPress on Hello world! zhi on 《Windows用户态程序高效排错》 中涉及到的链接(ZT) Amanda on 歌颂祖国,我们不差钱 Eternal on 歌颂祖国,我们不差钱 Eternal on English Reading:关于中国成为世界第二的真相 Archives
- May 2017
- April 2017
- July 2016
- June 2016
- April 2015
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- August 2005
- July 2005
Categories
Meta
Category Archives: Debug
.NET Reflector 7.0 License 机制分析
.NET Reflector免费版只能升级到6.7.0.3. 可下载(http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1)的最新版本为7.0. 运行时会要求Activate。 点击Active 按钮,弹出Activate 对话框 如果选择继续执行, 通过菜单也可以呼出Activate对话框 祭出WinDbg, F6, Attached到Reflector的进程上.根据WinDbg的输出,得知Reflector是基于.NET2.0的,*** wait with pending attachWARNING: Inaccessible path: ‘d:\mypdb’Symbol search path is: srv*d:\MsSymbols*http://msdl.microsoft.com/download/symbols;Executable search path is: ModLoad: 00400000 00848000 D:\_Personal\_DevTools\Reflector7\Reflector.exe…ModLoad: 79e70000 7a400000 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll…因此执行 .loadby sos mscorwks 加载当前.NET版本对应的sos , 如果debug .NET 4.0, … Continue reading
Posted in Debug
Leave a comment
Why my ADPlus 7 can’t create dump for w3wp.exe on Win 7
用adplus生成dump是一件很容易的事,只需使用命令 adplus -hang -pn w3wp.exe -o d:\dumps 正常情况下,adplus会在的d:\dumps目录下生成一个单独的目录,并在目录下生成4个文件:ADPlus logADplus reportDebuggerScriptDump file 今天当我执行这个熟悉的命令时却只生成了ADPlus report和DebuggerScript。似乎是ADPlus生成好了Debugger Script, 传递给了CDB, 但CDB没有执行。 一度我怀疑是不是新版本的ADPlus 7有问题(ADPlus 7之前是script,现在是.NET exe)。于是我尝试对一个我自己写的小程序生成dump,完全没问题。 我只能怀疑Win7中万恶的AUC了,果然,以administrator身份打开cmd窗口,再执行asplus就可以正常生成dump了。
Posted in Debug
Leave a comment
真的猛士,敢于调戏各种Dump文件
Debug一个Dump文件貌似简单,好像只需点上一支烟,在WinDbg中打开Dump文件,加载SOS,执行几个命令,就可找出问题所在….可惜这只是童话中才存在的场景,其可爱指数直逼“从此,公主和王子过上了幸福的生活”。现实中的场景往往是这样的,工作在32bit开发环境中的Developer奉命debug一个在64bit工作环境中生成的64bit进程或32bit进程的dump文件,而且,工作环境中的.NET Framework也不一定和开发环境一样,更惨的是,生成dump文件的过程本身就是错误的,或这个dump文件也许根本就不是full dump,种种遭遇,只能用惨淡二字来形容,然而,说到惨淡二字,又让人联想起另外四个字,那就是“真的猛士”。真的猛士,敢于搞定各种Dump文件。 1.处理不同版本的.NET Framework下生成的dump 通常执行.loadby sos mscorwks 可以根据本机.NET核心dll 的版本加载对应的SOS 在.NET 4.0中core dll的名字被改变了,相应的命令参数变成:.loadby sos clr 但是如果执行SOS命令!threads 或!pe 显示 PDB symbol for mscorwks.dll not loaded Failed to load data access DLL, 0x80004005 执行!clrstack不能显示堆栈中的函数名称 :019> !clrstack OS Thread Id: … Continue reading
Posted in Debug
Leave a comment
Tess Ferrandez:Common ASP.NET production issues and how to troubleshoot them with WinDbg
http://www.msteched.com/2008/Europe/WUX405http://channel9.msdn.com/Blogs/MSDNSweden/Vanliga-fel-som-grs-med-ASPNET-och-hur-du-hittar-dem-med-WinDbg Download: http://e.msteched.com/public/online/08_EU_WUX405_Low_DEV.wmv
Posted in Debug
Leave a comment
New Debugging Features in VS2010
1. VS中生成Dump文件 在调试过程中,选择菜单Debug->Save Dump As,保存当前目标进程的dump文件。 2. VS中调试dump文件 参考Hanselminutes on 9 – Debugging Crash Dumps with Tess Ferrandez and VS2010First look at debugging .NET 4.0 dumps in Visual Studio 2010 这是VS2010的一项新功能。但不幸的是: 这个功能只支持.NET4.0以上的.NET debug,.NET3.5和更早版本的只能进行Native Debug。 直接在VS2010 中打开(Ctrl+O)dump文件,可以看到 3. Parallel Stacks Debug->Windows->Parallel Stachs(Ctrl+D+S) … Continue reading
Posted in Debug
Leave a comment
在WinDbg中查看String的内容
比如有字符串,其地址为0d0e32180:026> !do 0d0e3218Name: System.StringMethodTable: 790fd8c4EEClass: 790fd824Size: 329922(0x508c2) bytes(C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)String: /wEPDwULLTE3MDA2MjU5MjQPZBYCAgMPZBYEAgEPEA8WB………. 可以用命令du 0d0e3218+0xc 0d0e3218+0x508c2来查看它的内容。du命令用来dump Unicodedu <start> <end>用来显示地址<start>和<end>之间的内容。要调查的字符串对象的地址是0d0e3218,真正的字符串起始地址是0d0e3218+0xc,根据!do命令的输出,这个字符串的长度是0x508c2。因此可以用命令du <address> <address>+size来显示。其输出为0:026> du 0d0e3218+0xc 0d0e3218+0x508c20d0e3224 "/wEPDwULLTE3MDA2MjU5MjQPZBYCAgMP"0d0e3264 "ZBYEAgEPEA8WBh4NRGF0YVRleHRGaWVs"0d0e32a4 "ZAULUHJvZHVjdE5hbWUeDkRhdGFWYWx1"0d0e32e4 "ZUZpZWxkBQtQcm9kdWN0TmFtZR4LXyFE"0d0e3324 "YXRhQm91bmRnZBAV6AcJUHJvZHVjdCAw"0d0e3364 "CVByb2R1Y3QgMQlQcm9kdWN0IDIJUHJv"……为了让WinDbg生成一个完整的字符串,用/pS 1 /ps 1略过输出的第一列,用.foreach命名把输出合并成一个字符串:0:026> .foreach /pS 1 /ps 1 (token {du 0d0e3218+0xc 0d0e3218+0x508c2}){.echo ${token}}/wEPDwULLTE3MDA2MjU5MjQPZBYCAgMPZBYEAgEPEA8WBh4NRGF0YVRleHRGaWVsZAULUHJvZHVjdE5hbWUeDkRhdGFWYWx1…. 这一招用在哪里呢?场景1:查看ViewState.BTW, … Continue reading
Posted in Debug
Leave a comment
《Windows用户态程序高效排错》 中涉及到的链接(ZT)
原书见作者Blog:http://www.cnblogs.com/lixiong/archive/2010/02/11/1667516.html 为了方便使用,我把 《Windows用户态程序高效排错》 中涉及到的链接都做成索引放到这里。其中好多链接本来是在我MSN Space blog上的,由于担心教育网用户可能无法访问MSN Blog,所以把相关的MSN Space上的文章也拷贝过来放到了这里。 DataSet and DataTable in ADO.NET 2.0http://msdn.microsoft.com/msdnmag/issues/05/11/DataPoints/default.aspx Reflector for .NEThttp://www.aisto.com/roeder/dotnet/ SafeHandle: A Reliability Case Study [Brian Grunkemeyer]http://blogs.msdn.com/bclteam/archive/2005/03/16/396900.aspx CLR SafeHandle Consideration [grapef]http://eparg.spaces.msn.com/blog/cns!59BFC22C0E7E1A76!576.entryhttp://blog.csdn.net/eparg/archive/2007/09/19/1791949.aspx RFC 1925 (RFC1925)http://www.faqs.org/rfcs/rfc1925.htmlhttp://blog.csdn.net/eparg/archive/2007/09/19/1791954.aspx Large memory support is available in Windows Server 2003 … Continue reading
[笔记]VS2010 Debug小窍门
原文见:http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-visual-studio-2010.aspxhttp://weblogs.asp.net/scottgu/archive/2010/04/21/vs-2010-debugger-improvements-breakpoints-datatips-import-export.aspx 1.执行到光标所在的代码行(Ctrl+F10) 常见的debug场景是:为了调查一段代码,会提前设置一个断点,中断后再单步执行(F10/F11)到要调查的代码。在VS2010中,不再需要单步执行N次,直接把光标置于要调查的代码行,再使用Ctrl+F10即可执行到要调查的代码行。 2. 给断点加Label 可以对Label进行排序,搜索 3. Pinn DataTips 4. pinned DataTip的第二个功能:保存Debug过程中中变量的值 5.条件断点(vs2008也支持) Condition:根据某个变量值中断 Hit count:根据断点所在代码行被执行的次数中断 Filter:断点对某些进程,线程起作用 6.When Hit(vs2008也支持) 当断点断到时执行一些动作 Trace points:输出一些Trace信息,并选择继续执行,还是中断。 比如输出:当前i={i} Run Macro:在VS中点击菜单: Tools->Macro->Macros IDE(或Alt+F11),调出Macro编辑器,在MyMacros节点下编写自己的Macro函数 Sub DumpLocals() Dim outputWindow As EnvDTE.OutputWindow outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Object … Continue reading
Posted in Debug
Leave a comment