zoukankan      html  css  js  c++  java
  • Windbg命令学习12(.lastevent和!analyze)

    以下不经说明都以calc强制附加windbg1.lastevent.lastevent 命令显示最近一次发生的异常或事件。

    1.lastevent

    .lastevent 命令显示最近一次发生的异常或事件。

    0:000> .lastevent
    Last event: 1534.f4c: Break instruction exception - code 80000003 (first chance)
      debugger time: Tue May 22 10:47:26.962 2012 (GMT+8)
    0:000> ~
    .  0  Id: 1534.e8c Suspend: 1 Teb: 7ffdf000 Unfrozen
       1  Id: 1534.1338 Suspend: 1 Teb: 7ffde000 Unfrozen
    #  2  Id: 1534.f4c Suspend: 1 Teb: 7ffdd000 Unfrozen
    

    我们可以看出,当前为2号线程发生异常,线程0前面的点号(.)表示它是当前线程。线程2前面的数字号(#)表示它是产生异常或调试器附加到进程时活动的线程。如果使用CTRL+C、 CTRL+BREAK或Debug | Break中断到调试器,总是会产生一个 0x80000003异常代码。

    2!analyze

    !analyze扩展显示当前异常或bug check的信息。

    0:000> .lastevent
    Last event: 1534.f4c: Break instruction exception - code 80000003 (first chance)
      debugger time: Tue May 22 10:47:26.962 2012 (GMT+8)
    0:000> !analyze
    *******************************************************************************
    *                                                                             *
    *                        Exception Analysis                                   *
    *                                                                             *
    *******************************************************************************
    
    Use !analyze -v to get detailed debugging information.
    
    DBGHELP: c:\mysymbol\kernel32.dll\49C4F48111e000\kernel32.dll - OK
    DBGHELP: c:\mysymbol\ntdll.dll\4D00F28096000\ntdll.dll - OK
    DBGHELP: c:\mysymbol\calc.exe\3B7D84101f000\calc.exe - OK
    DBGHELP: c:\mysymbol\UxTheme.dll\4802BDC037000\UxTheme.dll - OK
    DBGHELP: c:\mysymbol\MSCTF.dll\4802BDE34c000\MSCTF.dll - OK
    DBGHELP: c:\mysymbol\USER32.dll\4802BDBD90000\USER32.dll - OK
    DBGHELP: c:\mysymbol\kernel32.dll\49C4F48111e000\kernel32.dll - OK
    DBGHELP: c:\mysymbol\ntdll.dll\4D00F28096000\ntdll.dll - OK
    *************************************************************************
    ***                                                                   ***
    ***                                                                   ***
    ***    Your debugger is not using the correct symbols                 ***
    ***                                                                   ***
    ***    In order for this command to work properly, your symbol path   ***
    ***    must point to .pdb files that have full type information.      ***
    ***                                                                   ***
    ***    Certain .pdb files (such as the public OS symbols) do not      ***
    ***    contain the required information.  Contact the group that      ***
    ***    provided you with these symbols if you need this command to    ***
    ***    work.                                                          ***
    ***                                                                   ***
    ***    Type referenced: kernel32!pNlsUserInfo                         ***
    ***                                                                   ***
    *************************************************************************
    *************************************************************************
    ***                                                                   ***
    ***                                                                   ***
    ***    Your debugger is not using the correct symbols                 ***
    ***                                                                   ***
    ***    In order for this command to work properly, your symbol path   ***
    ***    must point to .pdb files that have full type information.      ***
    ***                                                                   ***
    ***    Certain .pdb files (such as the public OS symbols) do not      ***
    ***    contain the required information.  Contact the group that      ***
    ***    provided you with these symbols if you need this command to    ***
    ***    work.                                                          ***
    ***                                                                   ***
    ***    Type referenced: kernel32!pNlsUserInfo                         ***
    ***                                                                   ***
    *************************************************************************
    Probably caused by : ntdll.dll ( ntdll!DbgBreakPoint+0 )
    
    Followup: MachineOwner
    ---------
    
    0:000> !analyze -v
    *******************************************************************************
    *                                                                             *
    *                        Exception Analysis                                   *
    *                                                                             *
    *******************************************************************************
    
    DBGHELP: c:\mysymbol\kernel32.dll\49C4F48111e000\kernel32.dll - OK
    DBGHELP: c:\mysymbol\ntdll.dll\4D00F28096000\ntdll.dll - OK
    DBGHELP: c:\mysymbol\calc.exe\3B7D84101f000\calc.exe - OK
    DBGHELP: c:\mysymbol\UxTheme.dll\4802BDC037000\UxTheme.dll - OK
    DBGHELP: c:\mysymbol\MSCTF.dll\4802BDE34c000\MSCTF.dll - OK
    DBGHELP: c:\mysymbol\USER32.dll\4802BDBD90000\USER32.dll - OK
    DBGHELP: c:\mysymbol\kernel32.dll\49C4F48111e000\kernel32.dll - OK
    DBGHELP: c:\mysymbol\ntdll.dll\4D00F28096000\ntdll.dll - OK
    *************************************************************************
    ***                                                                   ***
    ***                                                                   ***
    ***    Your debugger is not using the correct symbols                 ***
    ***                                                                   ***
    ***    In order for this command to work properly, your symbol path   ***
    ***    must point to .pdb files that have full type information.      ***
    ***                                                                   ***
    ***    Certain .pdb files (such as the public OS symbols) do not      ***
    ***    contain the required information.  Contact the group that      ***
    ***    provided you with these symbols if you need this command to    ***
    ***    work.                                                          ***
    ***                                                                   ***
    ***    Type referenced: kernel32!pNlsUserInfo                         ***
    ***                                                                   ***
    *************************************************************************
    *************************************************************************
    ***                                                                   ***
    ***                                                                   ***
    ***    Your debugger is not using the correct symbols                 ***
    ***                                                                   ***
    ***    In order for this command to work properly, your symbol path   ***
    ***    must point to .pdb files that have full type information.      ***
    ***                                                                   ***
    ***    Certain .pdb files (such as the public OS symbols) do not      ***
    ***    contain the required information.  Contact the group that      ***
    ***    provided you with these symbols if you need this command to    ***
    ***    work.                                                          ***
    ***                                                                   ***
    ***    Type referenced: kernel32!pNlsUserInfo                         ***
    ***                                                                   ***
    *************************************************************************
    
    FAULTING_IP: 
    ntdll!DbgBreakPoint+0
    7c92120e cc              int     3
    
    EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
    ExceptionAddress: 7c92120e (ntdll!DbgBreakPoint)
       ExceptionCode: 80000003 (Break instruction exception)
      ExceptionFlags: 00000000
    NumberParameters: 3
       Parameter[0]: 00000000
       Parameter[1]: 00000002
       Parameter[2]: 00000003
    
    FAULTING_THREAD:  00000f4c
    
    DEFAULT_BUCKET_ID:  STACKIMMUNE
    
    PROCESS_NAME:  calc.exe
    
    ERROR_CODE: (NTSTATUS) 0x80000003 - {
    
    EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - <Unable to get error code text>
    
    EXCEPTION_PARAMETER1:  00000000
    
    EXCEPTION_PARAMETER2:  00000002
    
    EXCEPTION_PARAMETER3:  00000003
    
    NTGLOBALFLAG:  0
    
    APPLICATION_VERIFIER_FLAGS:  0
    
    ADDITIONAL_DEBUG_TEXT:  Followup set via attribute from Frame 0 on thread ffffffff
    
    PRIMARY_PROBLEM_CLASS:  STACKIMMUNE
    
    BUGCHECK_STR:  APPLICATION_FAULT_STACKIMMUNE
    
    STACK_TEXT:  
    00bfffc8 7c972119 00000005 00000004 00000001 ntdll!DbgBreakPoint
    00bffff4 00000000 00000000 00000008 000060c0 ntdll!DbgUiRemoteBreakin+0x2d
    
    
    FOLLOWUP_IP: 
    ntdll!DbgBreakPoint+0
    7c92120e cc              int     3
    
    SYMBOL_STACK_INDEX:  0
    
    SYMBOL_NAME:  ntdll!DbgBreakPoint+0
    
    FOLLOWUP_NAME:  MachineOwner
    
    MODULE_NAME: ntdll
    
    IMAGE_NAME:  ntdll.dll
    
    DEBUG_FLR_IMAGE_TIMESTAMP:  4d00f280
    
    STACK_COMMAND:  ~2s ; kb
    
    BUCKET_ID:  MANUAL_BREAKIN
    
    FAILURE_BUCKET_ID:  STACKIMMUNE_80000003_ntdll.dll!DbgBreakPoint
    
    Followup: MachineOwner
    ---------
    
    


    用户模式下,!analyze !analyze -v 扩展显示当前异常的信息。

    !analyze -v显示详细输出。
     

    注意的是.lastevent是元指令,而!analyze是扩展指令

    3.符号文件简介:

    符号文件对于调试程序是相当重要的,通常符号文件中包含以下内容

    全局变量的名字和地址

    函数名,地址及其原型

    帧指针优化数据

    局部变量的名字和地址

    源文件路径以及每个符号的行号

    变量,结构等的类型信息

  • 相关阅读:
    谁说固态硬盘没容量?4TB诞生、明年8TB!
    微软.NET Framework 4.5.2 RTM正式版
    Chrome 应用推荐
    MS14-021: Internet Explorer 安全更新: 2014 年 5 月 1 日
    百视通与微软共同宣布9月在华发布Xbox One
    支付宝5月4日起将停止收款主页业务 保留三种收款方式
    Chrome 应用推荐
    为什么《舌尖上的中国》让你欲罢不能?
    求连续子数组的最大乘积
    损失函数与代价函数区别
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693518.html
Copyright © 2011-2022 走看看