65.9K
CodeProject 正在变化。 阅读更多。
Home

小崩溃报告器

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.23/5 (16投票s)

2009年4月21日

GPL3

2分钟阅读

viewsIcon

39161

downloadIcon

477

收集机器上的崩溃数据,并将其发送到您的电子邮件进行分析。

引言

通常,当.NET中发生异常时,异常详细信息会显示出来,应用程序要么继续运行,要么失败。此源代码允许您收集必要的信息并将其发送到SMTP服务器,以便它会到达您的邮箱。

未处理的异常

例如,考虑以下可能发生在.NET程序中的除零异常。

int i = 0;
int j = 1 / i;

一旦抛出此异常,.NET将首先查看是否有任何内容正在尝试捕获该异常,否则将出现以下对话框。

然后,最终用户可以选择继续执行请求的功能或退出应用程序。

这是在内置LCR的程序中发生异常时会看到的样子

Little Crash Reporter 的工作原理

下图显示了程序中发生的错误是如何生成并发送给您的

这是程序的类图。主要使用的函数是事件处理程序(Application_ThreadExceptionCurrentDomain_UnhandledException),它们在发生异常时发送信号。之后,LCR 将接管...

如何使用 Little Crash Reporter

在崩溃报告器可以工作之前,必须设置事件处理程序以检测何时发生异常。

// Add event handler for thread exceptions
Application.ThreadException += 
  new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += 
  new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

别忘了...

// Event handler functions
static void CurrentDomain_UnhandledException(object sender, 
            UnhandledExceptionEventArgs e)
{
    CrashReporter ErrorDlg = new CrashReporter((Exception)e.ExceptionObject);
    ErrorDlg.ShowDialog();
}

static void Application_ThreadException(object sender, 
       System.Threading.ThreadExceptionEventArgs e)
{
    CrashReporter ErrorDlg = new CrashReporter(e.Exception);
    ErrorDlg.ShowDialog();
}

即使事件参数指定只发送一个普通的异常对象,实际的异常也是通过 typeof 获取的。

接下来,我们需要配置 PHP 脚本的 URL 和错误目录(通常只需保留默认设置)。

private readonly string BugReportURI = "http://www.bugreporturi.com/send.php";
private readonly string ErrorDirectory = string.Format(@"{0}\Errors", 
                                         Environment.CurrentDirectory);

完成后,使用 PHP Uploader 文件夹中的文件配置 SMTP 服务器、用户名和密码,用于发送电子邮件。然后将它们上传到您指定的 Web 服务器。

$host = "mail.example.com";
$username = "smtp_username";
$password = "smtp_password";

要进行测试,请创建一个除零异常。

int i = 0;
int j = 1 / i;

您的程序现在应该准备好发送错误报告了。

关注点

如果您正在寻找可以上传文件并将其发送到安全 SMTP 服务器的地方,只需在 Google 上搜索具有 cPanel 的免费 Web 主机即可。另外,如果您正在编辑发送的数据,请尊重他人的隐私。

历史

  • 修订版 1.0 - 文章发布。
  • 修订版 2.0 - 添加图片,更新说明
Little Crash Reporter - CodeProject - 代码之家
© . All rights reserved.