zoukankan      html  css  js  c++  java
  • bug定位

    【windows】crash原因定位初探


    背景

    在测试时经常会遇到crash崩溃的情况,或许抓dump和叫开发是常规的反应。但除此之外,我们可以尝试先自己定位下问题所在。


    用到的工具:

    windbg http://www.windbg.org/


    前置条件

    1. crash但是没有dump文件的情况:

    2. 方法一:调出任务管理器,找到崩溃进程,创建转储文件。

    3. 方法二:打开windbg,附加到崩溃进程,Input区域输入 .dump /m c:crash.dmp,就会生成标准的minidump。 输入 .dump /ma c:crash.dmp,生成的dump会包括完整的内存内容、句柄、未加载的模块、等等。

    4. crash有dump文件的情况,此时就可以直接进行下一步。

    windbg 分析

    1. 打开windbg,File->Open Crash Dump->选择目标文件加载。
    2. File->Symbole File Path,此处可以输入 "srv*c:mss*http://msdl.microsoft.com/download/symbols",然后在分析前就会自动下载对应的windows符号。当然,如果你有对应崩溃文件的pdb文件,也可以在这里输入路径。
    3. 输入.reload进行加载符号
    4. 输入!analyze -v,等待分析结果
    5. 查看结果,重点关注PROCESSNAME和MODULENAME。 

    更多命令可以直接在Input区域输入?进行查看。

  • 相关阅读:
    怎样在delphi中实现控件和窗体的拖拽
    Ecshop出现问题 includeslib_main.php on line 1329 includeslib_base.php on line
    Scrollbox的滚动条事件scrollbar事件的处理(Lazarus)
    TControl.WMLButtonUp的inherited的作用——是为了给子类控件新的处理消息的机会
    信号槽的被连接几次,就会执行几次(有空要仔细研究connect的各种用法)
    追踪CM_CONTROLCHANGE消息的产生和执行过程,可以较好的领会VCL的思想(就是到处通知,但耦合性很弱)
    TControl的显示函数(5个非虚函数,4个虚函数)和三个例子的执行过程(包括SetParent的例子)
    js广告轮询效果
    TWinControl的刷新过程(5个非虚函数,4个覆盖函数,1个消息函数,默认没有双缓冲,注意区分是TCustomControl还是Windows原生封装控件,执行流程不一样)
    Delphi控件的透明与不透明(要挨个解释一下原因),对InvalidateControl的关键理解
  • 原文地址:https://www.cnblogs.com/xiaobaichuangtianxia/p/6601509.html
Copyright © 2011-2022 走看看