日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

.lastevent、!analyze(dump分析、异常错误码查询)

發(fā)布時間:2025/3/15 86 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .lastevent、!analyze(dump分析、异常错误码查询) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

.lastevent

.lastevent?命令顯示最近一次發(fā)生的異常或事件。

[cpp]?view plaincopy
  • 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??
  • 我們可以看出,當(dāng)前為2號線程發(fā)生異常,線程0前面的點號(.)表示它是當(dāng)前線程。線程2前面的數(shù)字號(#)表示它是產(chǎn)生異常或調(diào)試器附加到進(jìn)程時活動的線程。如果使用CTRL+C、 CTRL+BREAK或Debug | Break中斷到調(diào)試器,總是會產(chǎn)生一個 0x80000003異常代碼。

    [cpp]?view plaincopy
  • 0:000>?.lastevent??
  • Last?event:?1664.4184:?Access?violation?-?code?c0000005?(first/second?chance?not?available)??
  • ??debugger?time:?Thu?Aug?13?11:20:44.037?2015?(GMT+8)??
  • 異常錯誤碼查詢

    異常 描述
    EXCEPTION_ACCESS_VIOLATION 0xC0000005 程序企圖讀寫一個不可訪問的地址時引發(fā)的異常。例如企圖讀取0地址處的內(nèi)存。
    EXCEPTION_ARRAY_BOUNDS_EXCEEDED 0xC000008C 數(shù)組訪問越界時引發(fā)的異常。
    EXCEPTION_BREAKPOINT 0x80000003 觸發(fā)斷點時引發(fā)的異常。
    EXCEPTION_DATATYPE_MISALIGNMENT 0x80000002 程序讀取一個未經(jīng)對齊的數(shù)據(jù)時引發(fā)的異常。
    EXCEPTION_FLT_DENORMAL_OPERAND 0xC000008D 如果浮點數(shù)操作的操作數(shù)是非正常的,則引發(fā)該異常。所謂非正常,即它的值太小以至于不能用標(biāo)準(zhǔn)格式表示出來。
    EXCEPTION_FLT_DIVIDE_BY_ZERO 0xC000008E 浮點數(shù)除法的除數(shù)是0時引發(fā)該異常。
    EXCEPTION_FLT_INEXACT_RESULT 0xC000008F 浮點數(shù)操作的結(jié)果不能精確表示成小數(shù)時引發(fā)該異常。
    EXCEPTION_FLT_INVALID_OPERATION 0xC0000090 該異常表示不包括在這個表內(nèi)的其它浮點數(shù)異常。
    EXCEPTION_FLT_OVERFLOW 0xC0000091 浮點數(shù)的指數(shù)超過所能表示的最大值時引發(fā)該異常。
    EXCEPTION_FLT_STACK_CHECK 0xC0000092 進(jìn)行浮點數(shù)運算時棧發(fā)生溢出或下溢時引發(fā)該異常。
    EXCEPTION_FLT_UNDERFLOW 0xC0000093 浮點數(shù)的指數(shù)小于所能表示的最小值時引發(fā)該異常。
    EXCEPTION_ILLEGAL_INSTRUCTION 0xC000001D 程序企圖執(zhí)行一個無效的指令時引發(fā)該異常。
    EXCEPTION_IN_PAGE_ERROR 0xC0000006 程序要訪問的內(nèi)存頁不在物理內(nèi)存中時引發(fā)的異常。
    EXCEPTION_INT_DIVIDE_BY_ZERO 0xC0000094 整數(shù)除法的除數(shù)是0時引發(fā)該異常。
    EXCEPTION_INT_OVERFLOW 0xC0000095 整數(shù)操作的結(jié)果溢出時引發(fā)該異常。
    EXCEPTION_INVALID_DISPOSITION 0xC0000026 異常處理器返回一個無效的處理的時引發(fā)該異常。
    EXCEPTION_NONCONTINUABLE_EXCEPTION 0xC0000025 發(fā)生一個不可繼續(xù)執(zhí)行的異常時,如果程序繼續(xù)執(zhí)行,則會引發(fā)該異常。
    EXCEPTION_PRIV_INSTRUCTION 0xC0000096 程序企圖執(zhí)行一條當(dāng)前CPU模式不允許的指令時引發(fā)該異常。
    EXCEPTION_SINGLE_STEP 0x80000004 標(biāo)志寄存器的TF位為1時,每執(zhí)行一條指令就會引發(fā)該異常。主要用于單步調(diào)試。
    EXCEPTION_STACK_OVERFLOW 0xC00000FD 棧溢出時引發(fā)該異常。

    !analyze

    !analyze擴展顯示當(dāng)前異常或bug check的信息。一般使用!analyze -v

    分析參考:https://msdn.microsoft.com/en-us/library/windows/hardware/ff560201(v=vs.85).aspx

    如下述為一個對NULL指針賦值生成的dump,自動生成dump可以參考16.windbg-.dump(轉(zhuǎn)儲文件)

    [cpp]?view plaincopy
  • 0:000>?!analyze?-v??
  • *******************************************************************************??
  • *?????????????????????????????????????????????????????????????????????????????*??
  • *????????????????????????Exception?Analysis???????????????????????????????????*??
  • *?????????????????????????????????????????????????????????????????????????????*??
  • *******************************************************************************??
  • ??
  • *************************************************************************??
  • ***???????????????????????????????????????????????????????????????????***??
  • ***???????????????????????????????????????????????????????????????????***??
  • ***????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?????????????????????????***??
  • ***???????????????????????????????????????????????????????????????????***??
  • *************************************************************************??
  • 首先被提示,這是沒有pdb文件 的

    [cpp]?view plaincopy
  • FAULTING_IP:???
  • test2+1002??
  • 01211002?8900????????????mov?????dword?ptr?[eax],eax??
  • FAULTING_IP:出現(xiàn)錯誤時的指令,這句明顯就是把eax賦到[eax]中

    [cpp]?view plaincopy
  • EXCEPTION_RECORD:??ffffffff?--?(.exr?0xffffffffffffffff)??
  • EXCEPTION_RECORD:崩潰時的異常記錄,可以使用.exr查看
    [cpp]?view plaincopy
  • ExceptionAddress:?01211002?(test2+0x00001002)??
  • ???ExceptionCode:?c0000005?(Access?violation)??
  • ??ExceptionFlags:?00000000??
  • NumberParameters:?2??
  • ???Parameter[0]:?00000001??
  • ???Parameter[1]:?00000000??
  • Attempt?to?write?to?address?00000000??
  • 這個就很詳細(xì)了,嘗試向0地址寫入,它其實就是調(diào)試中用到的結(jié)構(gòu)體:可以直接通過MSDN查到它的定義

    [cpp]?view plaincopy
  • typedef?struct?_EXCEPTION_RECORD?{??
  • ????DWORD????ExceptionCode;??
  • ????DWORD?ExceptionFlags;??
  • ????struct?_EXCEPTION_RECORD?*ExceptionRecord;??
  • ????PVOID?ExceptionAddress;??
  • ????DWORD?NumberParameters;??
  • ????ULONG_PTR?ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];??
  • ????}?EXCEPTION_RECORD;??
  • 注意的是:上面的NumberParameter:2表示ExceptionInformation有兩個附加異常碼,1和0,對于多數(shù)異常來說,這些附加異常碼是沒有什么用的,MSDN:For most exception codes, the array elements are undefined.只有以下兩個被定義了

    當(dāng)ExceptionCode為EXCEPTION_ACCESS_VIOLATION時,ExceptionInformation[0]=0表示線程試圖讀取不可訪問的數(shù)據(jù)ExceptionInformation[0]=1

    表示線程試圖寫入不可訪問的地址,很明顯,這里表示第二種,具體參考MSDN

    [cpp]?view plaincopy
  • DEFAULT_BUCKET_ID:??NULL_POINTER_READ??
  • DEFAULT_BUCKET_ID:表示了本次錯誤屬于哪種通用失敗

    [cpp]?view plaincopy
  • BUGCHECK_STR:??APPLICATION_FAULT_NULL_POINTER_READ_NULL_POINTER_WRITE??
  • The BUGCHECK_STR field shows the exception code. The name is a misnomer—the term?bug check?actually signifies a kernel-mode crash. In user-mode debugging, the exception code will be displayed—in this case, 0x80000003.

    [cpp]?view plaincopy
  • LAST_CONTROL_TRANSFER:??from?76b6337a?to?01211002??
  • 堆棧的最后調(diào)用:

    The LAST_CONTROL_TRANSFER field shows the last call on the stack. In this case, the code at address0x76b6337acalled a function at 0x1211002. You can use these addresses with the?ln (List Nearest Symbols)?command to determine what modules and functions these addresses reside in.

    [cpp]?view plaincopy
  • STACK_TEXT:????
  • WARNING:?Stack?unwind?information?not?available.?Following?frames?may?be?wrong.??
  • 0020fbb8?76b6337a?7efde000?0020fc04?77e092b2?test2+0x1002??
  • 0020fbc4?77e092b2?7efde000?596d1564?00000000?kernel32!BaseThreadInitThunk+0xe??
  • 0020fc04?77e09285?012112b6?7efde000?00000000?ntdll!__RtlUserThreadStart+0x70??
  • 0020fc1c?00000000?012112b6?7efde000?00000000?ntdll!_RtlUserThreadStart+0x1b??
  • 堆信息

    [cpp]?view plaincopy
  • STACK_COMMAND:??~0s;?.ecxr?;?kb??
  • 打印堆棧的命令

    [cpp]?view plaincopy
  • SYMBOL_NAME:??test2+1002??
  • 對應(yīng)的符號名稱

    [cpp]?view plaincopy
  • IMAGE_NAME:??test2.exe??
  • 對應(yīng)的模塊名稱




    3.符號文件簡介:

    符號文件對于調(diào)試程序是相當(dāng)重要的,通常符號文件中包含以下內(nèi)容

    全局變量的名字和地址

    函數(shù)名,地址及其原型

    幀指針優(yōu)化數(shù)據(jù)

    局部變量的名字和地址

    源文件路徑以及每個符號的行號

    變量,結(jié)構(gòu)等的類型信息

    新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!

    總結(jié)

    以上是生活随笔為你收集整理的.lastevent、!analyze(dump分析、异常错误码查询)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。