随笔分类 -  调试

windbg调试命令9(dt、d)
摘要:dt命令显示局部变量、全局变量或数据类型的信息。它也可以仅显示数据类型。即结构和联合(union)的信息。0:kd>dt_PEBnt!_PEB+0x000InheritedAddressSpace:UChar+0x001ReadImageFileExecOptions:UChar+0x002BeingDebugged:UChar+0x003SpareBool:UChar+0x004Mutant:Ptr32Void+0x008ImageBaseAddress:Ptr32Void+0x00cLdr:Ptr32_PEB_LDR_DATA+0x010ProcessParameters:Ptr32 阅读全文

posted @ 2012-12-24 10:38 紫 陌 阅读(11110) 评论(1) 推荐(0) 编辑

windbg调试命令8(bp、bu、bm、bl、bc、ba、be、bd)
摘要:以下以skinhgy为例,windbg附加运行1.bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效;2)WinDBG 不会把bp断点保存工作空间中bp Address或bp 伪寄存器或bp符号名称:0:000>xSimple1Demo!CSimple1DemoApp::InitInstance00640080Simple1Dem 阅读全文

posted @ 2012-12-21 09:04 紫 陌 阅读(7082) 评论(0) 推荐(0) 编辑

windbg调试命令7(!runaway、~)
摘要:1.!runaway!runaway命令显示每个线程消费的时间Bit 0 (0x1) 让调试器显示每个线程消耗的用户模式时间(user time),默认不加就是0x1Bit 1 (0x2) 显示每个线程消耗的内核时间(kernel time)。Bit 2 (0x4) 显示每个线程从创建开始经历了多少时间。就是三者的组合:1 2 3 4 5 6 70:002> !runaway User Mode Time Thread Time 0:890 0 days 0:00:00.031 2:a00 0 days 0:00:00.000 1:1174 0 days 0:00:00.0000:002 阅读全文

posted @ 2012-12-20 10:26 紫 陌 阅读(3187) 评论(0) 推荐(0) 编辑

windbg调试命令6(!peb、!teb)
摘要:PEB(Process Environment Block,进程环境块)存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。调试的程序的时候,了解PEB和TEB往往对分析很有帮助。 WinDBG中 !peb 和 !teb 命令可以用来显示PEB和TEB:0:000> !pebPEB at 7ffd6000InheritedAddressSpace: NoReadImageFil 阅读全文

posted @ 2012-12-20 09:57 紫 陌 阅读(1889) 评论(0) 推荐(0) 编辑

windbg调试命令5(ln、伪寄存器)
摘要:1.lnln 命令显示给定地址处的或者最近的符号。ln表示list near,ln命令将尽可能地给出与特定地址相关的符号,如果没有符号能够精确地与这个地址匹配,那么调试器将通过指针算法对靠近这地址的符号进行运逄,并返回运算结果符号0:000> ln 01012475(01012475) calc!WinMainCRTStartup | (0101263c) calc!__CxxFrameHandlerExact matches: calc!WinMainCRTStartup = <no type information>0:000> ln 01012475+1(0101 阅读全文

posted @ 2012-12-18 17:25 紫 陌 阅读(2491) 评论(0) 推荐(0) 编辑

windbg调试命令4(用户层.dump)
摘要:Windbg生成dump文件的方法:程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump文件。选项(1): /m命令行示例:.dump /m C:\dumps\myapp.dmp注解: 缺省选项,生成标准的minidump, 转储文件通常较小,便于在网络上通过邮件或其他方式传输。 这种文件的信息量较少, 阅读全文

posted @ 2012-12-18 16:18 紫 陌 阅读(3784) 评论(0) 推荐(2) 编辑

windbg调试命令3(sx、ld)
摘要:1.sxsx* 命令用来控制被调试的程序发生某个异常或特定事件时,调试器要采取的动作sx 命令显示当前进程的异常列表和所有非异常的事件列表,并且显示调试器遇到每个异常和事件时的行为。sxr 命令将所有异常和事件过滤器的状态重设为默认值。命令被清除、中断和继续选项被重设为默认值,等等。sx这个命令的输出信息可以分为三个部分:第一部分是事件处理与相应处理模式的交互,第二部分是标准的异常交互和处理行为,最后一部分是用户自定义的异常交互和处理行为以下面为例,我们先输入sxr再输入sx看下默认的处理行为都是怎么样的:0:000>sxrsxstateresettodefaults0:000>s 阅读全文

posted @ 2012-12-18 11:15 紫 陌 阅读(4359) 评论(0) 推荐(0) 编辑

windbg调试命令2(!gle、g、p)
摘要:!gle 扩展显示当前线程的最后一个错误码。这个太好记了,getlasterror取首字母:0:002>!gleLastErrorValue:(Win32)0(0)-<Unabletogeterrorcodetext>LastStatusValue:(NTSTATUS)0-STATUS_WAIT_00:002> !gleLastErrorValue: (Win32) 0 (0) - <Unable to get error code text>LastStatusValue: (NTSTATUS) 0 - STATUS_WAIT_0-all 显示目标系统中每 阅读全文

posted @ 2012-12-18 10:59 紫 陌 阅读(2164) 评论(0) 推荐(1) 编辑

windbg调试命令1(k、u、x)
摘要:k*命令显示给定线程的调用堆栈,以及其他相关信息~0 k表示打印0号线程的调用堆栈,直接用k表示打印当前线程的调用堆栈kd>~0kChildEBPRetAddr0007fddc77d191bentdll!KiFastSystemCallRet0007fdfc010021b0USER32!NtUserGetMessage+0xc0007ff1c010125e9calc!WinMain+0x25f0007ffc07c817077calc!WinMainCRTStartup+0x1740007fff000000000kernel32!BaseProcessStart+0x230:002> 阅读全文

posted @ 2012-12-18 09:34 紫 陌 阅读(5846) 评论(1) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示