多くの場合、私のプログラムは何らかの理由でクラッシュします。この場合、「閉じる」ボタンのあるWindowsメッセージが表示されます。そのようなことが起こるたびに、私は本当に何が起こったのか知りたいです。
コミュニティのおかげで、私はすでにいくつかの状況を「処理」する方法を知っています。プログラムの最初にそのようなコードを追加しました。
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
TaskScheduler.UnobservedTaskException +=
(object sender, UnobservedTaskExceptionEventArgs excArgs) =>
{
Log.Push(LogItemType.Error, "Exception occured. Task terminated! + " + excArgs.Exception);
excArgs.SetObserved();
};
.....
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Console.WriteLine("Error: CurrentDomain_UnhandledException entered.");
string message = (e.ExceptionObject as Exception).Message;
Console.WriteLine(message);
System.Diagnostics.Trace.WriteLine(message, "Unhandled UI Exception");
Log.Push(LogItemType.Error, message);
}
時々これは役に立ちます。しかし、プログラムがメッセージなしでクラッシュすることがあります。他に何ができますか?プログラムがクラッシュするたびに、その理由を知りたいです。
upd Windows Logsには、最も重要なもの(stacktrace)を除いて、必要なほとんどすべてのものが含まれています
Faulting application name: MBClient.exe, version: 1.0.0.0, time stamp: 0x50a5da1d
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec4aa8e
Exception code: 0xc0000374
Fault offset: 0x00000000000c40f2
Faulting process id: 0x10f8
Faulting application start time: 0x01cdc3c2041e2607
Faulting application path: C:\Oleg\bin\mbclient\MBClient.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 810c805d-2fc3-11e2-bfb5-2c768a509157