zoukankan      html  css  js  c++  java
  • 使用Windbg调试系统弹出的内存不可读错误

    步骤:

    1. 使用Windbg挂钩到崩溃的进程上面

    2. 使用~*k列出所有线程

    3. 搜索UnhandledExceptionFilter所在的线程

    4. 使用~ns切换到上面崩溃所在的线程,n为线程前面的序号

    5.使用kv显示线程调用堆栈

    6,可以看到02af7740 7c83ab50 02af7768 7c839b39 02af7770 kernel32!UnhandledExceptionFilter+0x628 (FPO: [Non-Fpo])类似的语句,第一个参数02af7768 此指向 EXCEPTION_POINTERS 结构

    0:010> dd 02af7768

    02af7768  02af785c 02af7878 02af7794 7c9232a8
    02af7778  02af785c 02afffdc 02af7878 02af7830
    02af7788  02afdc20 7c9232bc 02afffdc 02af7844
    02af7798  7c92327a 02af785c 02afffdc 02af7878
    02af77a8  02af7830 7c839ad8 00000001 02af785c
    02af77b8  02afffdc 7c94a9ef 02af785c 02afffdc
    02af77c8  02af7878 02af7830 7c839ad8 1e817ad0
    02af77d8  02af785c 1e817ad0 00000000 00000000


    第一个 DWORD 代表异常记录。 若要获取有关异常的类型信息,请请在命令提示符处运行以下: 
    .exr first DWORD

    0:010> .exr 02af785c
    ExceptionAddress: 4ae9f47d (gdiplus!ScanOperation::Blend_sRGB_sRGB_MMX+0x00000043)
       ExceptionCode: c0000005 (Access violation)
      ExceptionFlags: 00000000
    NumberParameters: 2
       Parameter[0]: 00000001
       Parameter[1]: 1e817ad0
    Attempt to write to address 1e817ad0


    第二个 DWORD 是上下文记录。 若要获取上下文的信息,请在命令提示符处运行以下: 
    .cxr second DWORD 

    0:010> .cxr 02af7878
    eax=ffffffff ebx=07188a48 ecx=000003cc edx=000000ff esi=1e817ad0 edi=1e817ad0
    eip=4ae9f47d esp=02af7b44 ebp=02af7b58 iopl=0         nv up ei pl zr na pe nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
    gdiplus!ScanOperation::Blend_sRGB_sRGB_MMX+0x43:
    4ae9f47d 8907            mov     dword ptr [edi],eax  ds:0023:1e817ad0=????????


  • 相关阅读:
    java-String类
    多线程的细节
    java-多线程的练习----妖,等待唤醒,代码重构,lock到condition
    javascript函数的声明和调用
    表单
    java-多线程的入门_进阶总结
    uboot命令
    u-boot移植 III
    u-boot移植 II
    汇编词典
  • 原文地址:https://www.cnblogs.com/vcerror/p/4289216.html
Copyright © 2011-2022 走看看