关于exe文件崩溃时的错误报告 ( 积分: 200 )

  • 主题发起人 主题发起人 hs-kill
  • 开始时间 开始时间
H

hs-kill

Unregistered / Unconfirmed
GUEST, unregistred user!
如题:
比如windows的错误报告、BitComet出错时也会有个CrashReport.exe的程序记录错误发送报告

另外那些杀毒软件在崩溃或者出错时也会执行一个程序来记录环境数据并产生错误报告

我想知道这是如何做到的........或者说,实现方法是什么....似乎是一个单独的程序来执行的
现在我是希望自己的程序能够在出现未知错误导致程序崩溃的时候能够关闭当前进程并且重新执行该程序

所以,我需要了解如何检测到程序崩溃.....也就是上面那个错误报告是怎么实现的

最好有delphi的例子.....
 
windows的错误报告应该是系统的功能,不是应用软件的功能。应用软件大部分错误都可以用
Try
Except
end;
捕获。严重错误,如非法访问不允许访问的内存等,必须修改程序,“关闭当前进程并且重新执行该程序”是不能解决问题的。
 
不是try excpt end的问题.....
比如我引用了外部的OCX或者DLL 当产生某些不可预料的错误时用try except是无法拦截到的

但是这些错误都是偶尔发生的,很难检测到原因,如果是经常发生就是程序问题了
你可以找个BitComet来装下,他有个CrashReport.exe的程序,当BitComet发生错误被关闭的时候他就会启动记录环境数据发送报告
可能发生将要被关闭的错误提示时会有windows消息?还是什么别的,我就是想知道这点
如何知道程序崩溃将被windows关闭
 
已经崩溃的进程是不可能知道自己要崩溃的,更加不可能处理错误。如果要求仅仅用一个进程来实现崩溃的检测与重新启动程序,我觉得应该很难了。如果确实有富翁知道实现的方法,我也想知道。

可以运行一个进程来进行监视主进程是否崩溃了。
 
我也明白程序是不可能自己知道自己崩溃的
但是作为管理程序的windows应该知道程序访问了不能访问的地址造成无法继续而崩溃,所以我感觉windows应该有检测程序崩溃的机制并且有类似消息之类的通知才对.....
 
调试通知不知道行不行
我记得有一款加壳软件
就是自己调试自己的
可以参考一下
 
用EurekaLog v5.1.11 Enterprise可以实现,下载地址:
http://www.delphifans.com/SoftView/SoftView_2121.html
 
楼上的东西不错.....不过我找的是已经编译成的exe可以检测出现的崩溃.....不是在IDE环境下,这个东西我好象没见到有这样的功能

Mike1234567890说的加壳软件....好象是这个功能,不过我没找到-_-! 信息太少了,能多提供点吗,比如名字或者什么特别的介绍之类的
 
编译时带上调试信息,应该可以。我平时用这个:ExceptionalMagic

微软有本书,《应用程序调试技术》,可以参考一下。
 
在主程序文件中加入try试试,如下:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
try
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
except
{发现严重错误后执行代码...}
end;
end.
 
恩 very good
ExceptionalMagic是个好东西[:D]

EurekaLog v5.1.11 Enterprise好象也是IDE环境下用的吧,我看了介绍,没仔细用,也许有这个功能....-_-!英语不好看不太懂.....呵呵

散分了,主要还要感谢下hubdog,他的笔记帮了我不少忙
http://www.delphibbs.com/keylife/iblog_show.asp?xid=197

至于gdrfds......抱歉,我试过了 不行,呵呵
 
后退
顶部