首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Debugging

摘要:.symfix.reload.loadby sos clr!pe!name2eesxe clr!dumpmt -md [MethodTable]!dumpmd [MethodDesc]k, kb, kp [10, 20]!clrstack [-a, -p] 阅读全文

posted @ 2011-05-17 12:18 饭后爱 阅读(257) 评论(0) 推荐(0)

摘要:When multiple .NET runtime are loaded in one target process or one dump file, for example:0:030> lmstart end module name00000000`1b6d0000 00000000`1b9ba000 System_Data (deferred) …000007fe`f3e60000 000007fe`f47c5000 clr (deferred) …000007fe`f9880000 000007fe`fa230000 mscorwks (deferred) …0:030> 阅读全文

posted @ 2011-05-13 16:08 饭后爱 阅读(473) 评论(1) 推荐(0)

摘要:Me and some colleagues of mine recently all stumbled over the following error when analyzing .NET minidumps:I opened a the minidump and typed !CLRStack. What I got was:Failed to load data access DLL, 0x80004005Verify that 1) you have a recent build of the debugger (6.2.14 or newer)2) the file mscord 阅读全文

posted @ 2011-05-11 15:30 饭后爱 阅读(1578) 评论(0) 推荐(0)

摘要:Error message:0:000:x86> .loadby sos clrThe call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos) failed, Win32 error 0n193 "%1 is not a valid Win32 application."Please check your debugger configuration and/or network access.Resolution:If you're on 64 bit, you shoul 阅读全文

posted @ 2011-05-05 13:56 饭后爱 阅读(545) 评论(0) 推荐(0)

摘要:Link: http://msdn.microsoft.com/en-us/library/ee817663.aspxSummary: This guide provides debugging guidance for developers debugging .NET Web applications. It discusses the processes for debugging in a... 阅读全文

posted @ 2009-12-13 09:54 饭后爱 阅读(380) 评论(0) 推荐(0)

摘要:一、Debug 和 Release 编译方式的本质区别   Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。  Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,... 阅读全文

posted @ 2009-08-11 15:51 饭后爱 阅读(331) 评论(0) 推荐(0)

摘要:Errors in code are inevitable. No matter how much testing you have done, when your application is deployed in a production environment, errors will occur. These problems can manifest as standard exceptions, as hangs where the CPU is being used 100 percent of the time, as deadlocks, where a couple of threads are locked and will never release the other's resources, and as crashes, where the application dies a silent death. In these cases, error logs often provide little or no help in pinpointi 阅读全文

posted @ 2009-04-11 10:04 饭后爱 阅读(535) 评论(0) 推荐(0)

摘要:Load order: mscoree.dll -> mscorwks.dll -> mscorlib.dll -> mscorjit.dll Sample Code: 阅读全文

posted @ 2009-04-11 09:21 饭后爱 阅读(482) 评论(0) 推荐(0)

摘要:CLR中执行的托管代码分为Jitted 代码和ngened代码。区Jitted代码是动态编译生成的而ngened代码是预编译生成的。本文将讲述使用Windbg在这两种不同的代码中设置断点的方法。本文将使用如下的例子进行说明: using System; public class Test { public static void Main() { Console.WriteLine("Test"); } } 编译上面的代码生成test.exe 阅读全文

posted @ 2009-04-11 00:03 饭后爱 阅读(1781) 评论(0) 推荐(0)

摘要:ASSOC 显示或修改文件扩展名关联。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式 CTRL+C 检查。 BCDEDIT 设置启动数据库中的属性以控制启动加载。 CACLS 显示或修改文件的访问控制列表(ACL)。 CALL 从另一个批处理程序调用这一个。 CD 显示当前目录的名称或将其更改。 CHCP 显示或设置活动代码页数。 CHDIR 显示当前目录的名称或将其更改。 CHKDSK 检查磁盘并显示状态报告。 CHKNTFS 显示或修改启动时间磁盘检查。 CLS 清除屏幕。 CMD 打开另一个 Windows 命令解释程序窗口。 COLOR 设置默认控制台前景和背景颜色。 COMP 比较两个或两套文件的内容。 COMPACT 显示或更改 NTFS 分区上文件的压缩。 CONVERT 将 FAT 卷转换成 阅读全文

posted @ 2009-03-28 20:45 饭后爱 阅读(1242) 评论(0) 推荐(0)

摘要:保存 dumps 在我们调试不容易重现的问题时,可能想把应用程序状态的快照(内存内容,打开名柄的列表,等等)保存起来,以便日后分析。例如,当我怀疑当前的状态可能包含我试图解决的问题的关键点,而想继续运行应用程序来查看情形怎样发展时,它就很有用了。有时候,我会做一系列的快照,一个接一个,以便稍后我能比较它们,查看在应用程序运行时有些数据结构怎样变化。当我最终能重现这个问题时,我总是创建一个快照来确保我没有因为某些错误(错误关闭了调试会话)而丢失有价值的信息。或许,大家不难猜到当我说“快照”时,我真正的意思是“minidump”,因为minidump为随时保存应用程序的状态提供了便利。 阅读全文

posted @ 2009-03-12 22:23 饭后爱 阅读(455) 评论(0) 推荐(0)

摘要:导言 你钟情什么样的调试器?如果你问我这个问题,我会回答是“Visual Studio + WinDbg”。我比较喜欢Visual Studio那朴实无华且易操作的接口,更喜欢它能迅速把我需要的信息以可视的形式展示出来。但遗憾的是,Visual Studio调试器无法获取某些信息。例如,假设我想知道哪个线程正在占用特殊的临界区?或者是哪个函数占用了大部分的栈空间?不用担心,有WinDbg呢。它的命令能回答这些问题,以及调试过程中出现的其它有趣的问题。甚至不退出Visual Studio,WinDbg就可以附上目标应用程序――谢谢WinDbg支持入侵模式的调试(本文后面会详细讨论),我们可以把Visual Studio GUI和WinDbg的命令行结合起来使用。 唯一的问题是WinDbg不太好用。需要花些时间适应它的用户界面,而掌握它的命令则要花更多的时间。但是假设你现在就需要它,马上用它调试紧急的问题?有什么快速简便的方法吗?当然。WinDbg的小弟CDB,功能和WinDbg差不多;因为它是基于命令行的,所以用起来更简单一些。在这篇文章里,我将把CDB作为Visual Studio 阅读全文

posted @ 2009-03-12 20:32 饭后爱 阅读(430) 评论(0) 推荐(0)

摘要:WinDbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。由于大部分程序员不需要做Kernel模式调试, 我在这篇文章中不会介绍Kernel模式调试。Kernel模式调试对学习Windows核心极有帮助。如果你对此感兴趣,可以阅读Inside Windows 2000和Windbg所带的帮助文件。 这篇文章得主要目的是介绍WINDBG的主要功能以及相关的命令。关于这些命令的详细语法,请参阅帮助文件。对文章中提到的许多命令,WINDBG有相应的菜单选项。 阅读全文

posted @ 2009-03-12 20:27 饭后爱 阅读(832) 评论(1) 推荐(0)

摘要: 在配置好WinDbg之后,我们载入一个CLR程序并执行至CLR被载入,然后开始我们的CLR探索之旅。 首先,使用!threads命令看看当前CLR中有哪些线程正在执行 阅读全文

posted @ 2009-03-10 23:59 饭后爱 阅读(441) 评论(0) 推荐(0)

摘要:一直以来,我对CLR的分析都是基于MSDN、.NET Framework SDK自带文档和Rotor项目提供的源代码进行静态分析,辅以自己写的一些小例子或对Rotor的修修补补,来进行有限度的动态分析。虽然也用SoftIce跟踪过某些核心函数的机制,但感觉实在是太痛苦了,呵呵。 最近偶然之间发现我的偶像John Robbins在MSDN的BugSlayer上发表的一篇文章,才发现原来用WinDbg可以如此方便的动态分析CLR的运行机制。 阅读全文

posted @ 2009-03-10 23:58 饭后爱 阅读(372) 评论(0) 推荐(0)

摘要:1 !address eax查看对应内存页的属性 2 vertarget 显示当前进程的大致信息 3 !peb 显示process Environment Block 4 lmvm 可以查看任意一个dll的详细信息 例如:0:026 lmvm msvcrt (deferred)表示察看msvcrt.dll的信息,但是没有加载 symbol可以通过.reload命令来加载 5.reload /!sym 加载符号文件 阅读全文

posted @ 2009-02-14 07:25 饭后爱 阅读(1699) 评论(0) 推荐(0)