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

2009年3月12日

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

posted @ 2009-03-12 22:23 饭后爱 阅读(428) 评论(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 饭后爱 阅读(420) 评论(0) 推荐(0) 编辑

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

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

2009年3月10日

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

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

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

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

2009年2月21日

摘要: The .NET Framework tools are designed to make it easier for you to create, deploy, and manage applications and components that target the .NET Framework. This section contains detailed information about the tools. You can run all the tools from the command line with the exception of the Assembly Cache Viewer (Shfusion.dll) and the Microsoft CLR Debugger (DbgCLR.exe). You must access Shfusion.dll from Microsoft Windows Explorer. DbgCLR.exe is located in the Microsoft.NET"FrameworkSDK"GuiDebug 阅读全文

posted @ 2009-02-21 00:08 饭后爱 阅读(500) 评论(0) 推荐(0) 编辑

2009年2月20日

摘要: When you install the .NET Framework, two different types of configuration files are installed, machine configuration files and security policy configuration files. In a side-by-side installation environment, you can install multiple versions of the .NET Framework on the same computer. Each installed version has its own set of machine configuration files and security policy configuration files. The settings in these files are specific to the version that installed them. 阅读全文

posted @ 2009-02-20 21:07 饭后爱 阅读(1340) 评论(0) 推荐(0) 编辑

摘要: This document outlines best practices for testing a managed application or component for compatibility with newer runtime versions. It covers different configurations you should test to ensure that the application continues to run properly. Full details on compatibility are available in Microsoft .NET Framework 1.1 and 2.0 Compatibility. If you have not already read that document, we recommend that you read it before proceeding. Test 1: Installs correctly on a computer with the .NET Framewor 阅读全文

posted @ 2009-02-20 20:43 饭后爱 阅读(520) 评论(0) 推荐(0) 编辑

摘要: The Microsoft .NET Framework 2.0 builds on the success of the Microsoft .NET Framework 1.0 and 1.1 to provide the best runtime environment for Web and Microsoft Windows client applications. Microsoft's compatibility goal for .NET Framework 1.1 applications is that they should work smoothly on the .NET Framework 2.0 except for a set of documented changes as provided here. This article discusses application compatibility scenarios and provides recommendations on best practices for developers to 阅读全文

posted @ 2009-02-20 20:36 饭后爱 阅读(439) 评论(0) 推荐(0) 编辑

2009年2月19日

摘要: My team has been cranking hard on our RTM milestone, and we are driving to hit our final ASP.NET + Visual Web Developer ZBB (Zero Bug Bounce) on June 3rd. Shortly after this we’ll enter lock-down and ... 阅读全文

posted @ 2009-02-19 22:08 饭后爱 阅读(234) 评论(0) 推荐(0) 编辑

2009年2月17日

摘要: 操作数寻址方式是汇编语言的重点和难点。请按如下思路学习: 1. 操作数可以存在什么地方? ⑴ 操作数存在于指令代码中,处理器译码时就立即获得了这个操作数,这就是立即(数)寻址方式。汇编指令中,这个立即数(操作数)以常量形式出现。 ⑵ 操作数存在于处理器内部寄存器中,处理器从寄存器中获得这个操作数, 这就是寄存器寻址方式。汇编指令中,这个寄存器操作数以寄存器名形式出现。 ⑶ 操作数存在于主存中,处... 阅读全文

posted @ 2009-02-17 22:38 饭后爱 阅读(613) 评论(0) 推荐(0) 编辑

2009年2月14日

摘要: 8086有14个16位寄存器:8个通用寄存器、1个指令指针寄存器、1个标志寄存器和4个段寄存器。它们都有名称,编程时使用其名称代表其保存的内容。 AX――累加器(Accumulator),使用频度最高 BX――基址寄存器(Base Register),常存放存储器地址 CX――计数器(Count Register),常作为计数器 DX――数据寄存器(Data R... 阅读全文

posted @ 2009-02-14 12:41 饭后爱 阅读(493) 评论(0) 推荐(0) 编辑

摘要: 寄存器定义 寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个 “8 ... 阅读全文

posted @ 2009-02-14 11:58 饭后爱 阅读(209) 评论(0) 推荐(0) 编辑

摘要: 为了清楚地表达每条指令所能配合使用的操作数寻址方式,课程采用如下符号: r8 任意一个8位通用寄存器AH/AL/BH/BL/CH/CL/DH/DL r16 任意一个16位通用寄存器AX/BX/CX/DX/SI/DI/BP/SP reg 代表r8或r16 seg 段寄存器CS/DS/ES/SS m8 一个8位存储器操作数单元(包括所有主存寻址方式) m16 一个16位... 阅读全文

posted @ 2009-02-14 07:52 饭后爱 阅读(351) 评论(0) 推荐(0) 编辑

摘要: 1.通用数据传送指令. MOV----> move MOVSX---->extended move with sign data MOVZX---->extended move with zero data PUSH---->push POP---->pop PUSHA---->push all POPA---->pop all PUSHAD---->push all data ... 阅读全文

posted @ 2009-02-14 07:32 饭后爱 阅读(387) 评论(0) 推荐(0) 编辑