小崩溃报告器
收集机器上的崩溃数据,并将其发送到您的电子邮件进行分析。
引言
通常,当.NET中发生异常时,异常详细信息会显示出来,应用程序要么继续运行,要么失败。此源代码允许您收集必要的信息并将其发送到SMTP服务器,以便它会到达您的邮箱。
未处理的异常
例如,考虑以下可能发生在.NET程序中的除零异常。
int i = 0;
int j = 1 / i;
一旦抛出此异常,.NET将首先查看是否有任何内容正在尝试捕获该异常,否则将出现以下对话框。
然后,最终用户可以选择继续执行请求的功能或退出应用程序。
这是在内置LCR的程序中发生异常时会看到的样子
Little Crash Reporter 的工作原理
下图显示了程序中发生的错误是如何生成并发送给您的
这是程序的类图。主要使用的函数是事件处理程序(Application_ThreadException
和 CurrentDomain_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 - 添加图片,更新说明