美文网首页
开发辅助——procdump

开发辅助——procdump

作者: 丑角的晨歌 | 来源:发表于2018-08-20 20:48 被阅读0次

    Windows平台下的命令行工具,可以在指定的条件下生成dump文件。
    应用场景:主要用于高CPU占用率的性能分析优化,程序停止响应的调试,First chance异常捕获等,还可以监视内存使用、结合系统性能计数器使用,更详细介绍见https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
    这里只记录一下常用用法。
    在命令提示符下procdump -?可以查看全部参数的说明,这里列举几个常用的:
    -c/-cl: 监视CPU占用率阀值,-c为当CPU占用率高于该值时创建dump,-cl则在低于该值时创建dump。
    -u: 监视单核心的CPU占用率,与-c一起使用
    -s: 时间,以秒为单位,结合-c使用实现当连续N秒CPU占用高于某值时保存dump。
    -n: 设置数量,保存多个dump后才退出该程序。
    -h: 当进程中存在挂起窗口(不响应窗口消息)时创建dump。
    举例:
    现在就写个测试程序,故意引发一下程序停止响应,看一下怎么用procdump跟踪这个问题。创建一个MFC Dialog程序,在OK按钮的事件里面写一个死循环:

    void CProcdump_testDlg::OnBnClickedOK() 
    {
      // TODO: Add your control notification handler code here
      while(1);
      CDialogEx::OnOK();
    }
    

    运行一下程序,在任务管理器里看一下PID,14204
    打开命令提示符,用之前介绍的-h参数,在有窗口挂起时保存dump:
    C:\Users\test\Desktop>procdump 14204 -h
    点一下OK按钮,触发死循环,这时可以在命令提示符窗口看到procdump提示我们已经创建了dump:

    [12:01:05] Hung Window:
    [12:01:05] Dump 1 initiated: C:\Users\test\Desktop\procdump_test.exe_180820_120105.dmp
    [12:01:05] Dump 1 complete: 1 MB written in 0.0 seconds
    [12:01:06] Dump count reached.
    

    可以用VS或者Windbg分析生成的dump,这里用VS打开dump可以看到程序就停在导致停止响应的地方:


    相关文章

      网友评论

          本文标题:开发辅助——procdump

          本文链接:https://www.haomeiwen.com/subject/xgtriftx.html