zoukankan      html  css  js  c++  java
  • delphi代码实现创建dump文件

    I used a "watchdog" thread for this, which checks if the mainform is responding, and make a minidump (you can load this dump with WinDbg, use map2dbg.exe to convert a Delphi .map to a .dbg).

    FMainformHandle := Application.MainForm.Handle;
    Result := SendMessageTimeOut( FMainformHandle, WM_NULL, 0, 0,
    SMTO_NORMAL or SMTO_ABORTIFHUNG,
    C_TIME_OUT_SECONDS * 1000, //wait 1minute
    iRes) <> 0;
    if not Result then
    begin
    hFile := CreateFile(PChar(Result), GENERIC_WRITE, FILE_SHARE_WRITE, nil,
    CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    try
    MiniDumpWriteDump(GetCurrentProcess, GetCurrentProcessId, hFile,
    aDumpType, nil, nil ,nil);
    finally
    FileClose(hfile);
    end;
    end;
    But you can also use

    jclDebug.pas:
    JclCreateThreadStackTraceFromID(MainthreadId)
    for this (no need for WinDbg etc, only the JCL + Delphi .map)

    3rd option is to use my new sampling profiler, which has a "process stack viewer", so you can watch the stack of any thread of a running process (I used SysInternals Process Explorer for this before, but it needs .dbg files). It uses .map, TD32, JDBG etc (any Delphi debug info) for stack tracing.
    You can use this when you app hangs, to investigate the stack.

    Windows API (for MiniDumpWriteDump):
    http://sourceforge.net/projects/jedi-apilib/files/JEDI%20Windows%20API/
    WinDbg:
    http://www.microsoft.com/whdc/devtools/debugging/installx86.Mspx
    Map2Dbg:
    http://code.google.com/p/map2dbg/
    JEDI JCL:
    http://jcl.delphi-jedi.org/
    AsmProfiler, samling mode: (still under development!)
    http://asmprofiler.googlecode.com/files/AsmSamplingProfiler0.4.zip

    http://stackoverflow.com/questions/2063655/how-to-debug-hanging-main-thread-in-delphi-application/2070194#2070194

  • 相关阅读:
    vc 定义返回值为字符串函数方法
    typedef用法(二)
    新版.Net开发必备十大工具【转自www.bitsCN.com】
    大公司面试题
    NET(C#)连接各类数据库集锦
    对对象类型和调用方法属性进行存储以提升反射性能
    数据库连接字符串大全
    C#操作注册表的方法
    上班族解除疲劳
    在Microsoft Visual Studio 2005上安装.net3.0开发环境(含开发环境下
  • 原文地址:https://www.cnblogs.com/findumars/p/5671159.html
Copyright © 2011-2022 走看看