• 通过简单Dump能获得的基本信息


    如果有出错程序的dump, 哪怕dump不是在合适的时机获取的, 也可以分析出有用的信息.

    • 通过vertarget查看系统版本和系统运行了多长时间.
    • 通过!peb查看环境变量的情况. 由于很多第三方软件都习惯把自身路径添加到环境变量中, 所以这里很多时候可以看出一些已经安装的软件.
    • 同时还能看到当前进程所加载的DLL和对应路径.

    检查DLL和对应路径时, 可以重点检查如下的一些项目:

    1. 有没有防毒程序的DLL加载.
    2. 有没有类似MSVCRTD或MFC42D的debug版本DLL加载. 如果有, 请说明程序使用的某些组件是否是在Debug模式下编译的.
    3. 通过MFC42这样的DLL大致判断程序时如何开发的. 比如是否使用MFC或ATL. 如果加载了mscoree, 询问一下程序是否使用了托管代码.
    4. 通过lmvm命令检查值得怀疑的DLL的详细版本和公司名称. 必要情况下还可以使用sos!savemodule命令把DLL保存到本地以检查链接情况, 等等.
    5. 通过lmf命令还可以检查是否有unload的module. 很多问题是由正在使用的module被unload导致的, 也有很多问题最后导致某些module被unload. 看看这里的unload module是不是正常情况.
    6. 检查module的数量, 是否有动态生成的module加载. 如果进程中加载的module过多, 则容易导致内存地址碎片. 比如对于asp.net程序, 很多module是对应于aspx页面动态编译生成的, 需要通过设置debug=false来激活batch compilation, 以减少动态module的产生.
    7. 通过dump文件的尺寸来判断内存使用情况. 一般dump的大小与实际内存使用的大小一致.
    8. 检查某些系统dll来判断某些系统组件是否已经升级到最新. 比如检查mscorwks的版本就可以判断.NET Framework的版本以及是否打过SP1, 检查msado15就可以判断MDAC的版本.

    摘自<Windows用户态程序高效排错>

  • 相关阅读:
    JavaScript向input标签的value赋值
    thinkphp关于本地引用图片
    jquery中得到input的值
    HTML的video标签,不能下载视频代码
    PHP数据库类
    MySQL数据库之MyISAM与InnoDB的区别
    php函数ob_start(),解决header输出头报错问题
    eps图片中文乱码问题
    感悟----程序员需要养成的习惯
    <前m大的数>的妙解
  • 原文地址:https://www.cnblogs.com/awpatp/p/1618162.html
Copyright © 2020-2023  润新知