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即可设定断点。

    参考下载:

  • 相关阅读:
    day1-字符串拼接、表达式、break和continue
    ssh免密登录
    1-5 文档的基本 CRUD 与批量操作
    1-4 安装logstash
    1-3 安装cerebro
    1-2 kibana 7.5.1 安装配置
    1-1 elasticsearch7.5 集群搭建 es 7
    生产环境k8s集群搭建
    Gearman任务分布系统部署windows平台_使用Cygwin
    [转载]单元测试之道(使用NUnit)
  • 原文地址:https://www.cnblogs.com/mingle/p/3438025.html
Copyright © 2011-2022 走看看