zoukankan      html  css  js  c++  java
  • 深入浅出WinDbg——利用快速定位错误

    场景描述:

    Sharepoint代码的某方法LoadLines()中使用了SPSecurity.RunWithElevatedPrivileges(delegate()

    此方法两次调用了Common.GetLookupValue,并且问题可能出在这里。

    解决方案:

    由于开发环境没有VS2008,所以我们使用WinDbg进行调试。针对这种情况有两种方式:

    1 Load SOS(参考文章)

    2 通过快速捕捉异常的方式来快速定位错误(!u eip)

    操作步骤:

    1 打开WinDbg,附加对应的w3wp.exe进程。

    2 刷新出错页面,运行命令!u eip 以反汇编的方式来查看内存

    3 通过搜索>>>快速定位出错点,然后分析出错的上下文,定位可能的出错语句位置:

    000007ff`013003f3 e8c8ddffff      call    000007ff`012fe1c0 (ConcurrenceAutomation.Common.GetLookupValue(System.Object), mdToken: 060000d0)

    4 运行命令r,查看寄存器(rax)指针引用的值为空引起的(byte ptr [rax],0

    其他调试技巧:

    技巧1 每次启动调试加载dll,如何清理?使用命令sxd ld清理。

     技巧2 定位目标断点代码

    1 查看!u eip的结果,搜索关键字Common.GetLookupValue

    000007ff`013003f3 e8c8ddffff      call    000007ff`012fe1c0 (ConcurrenceAutomation.Common.GetLookupValue(System.Object), mdToken: 060000d0)

    2 bp 000007ff013003f3即可设定断点。

    参考下载:

  • 相关阅读:
    临时表的汇总
    数据仓库逻辑建模
    在Eclipse下搭建Android开发环境教程(1)
    SQL Server数据库锁的引入的缘由
    C#图片处理基本应用(裁剪,缩放,清晰度,水印)(转)
    Default on textbox
    引用 几种绑定DropdownList的方法
    Jquery示例
    MSSql数据库锁
    C# 常用算法
  • 原文地址:https://www.cnblogs.com/mingle/p/3438025.html
Copyright © 2011-2022 走看看