7

多くの場合、私のプログラムは何らかの理由でクラッシュします。この場合、「閉じる」ボタンのある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
4

4 に答える 4

10

例外コード 0xc0000374 は、ヒープの破損に直面していることを意味します。

この種のエラーの最も一般的な原因は、次の 2 つです。

  • RAMモジュールの不良
  • あるスレッドが何かを読み込もうとして、その間に別のスレッドがデータを削除した場合のバッファ オーバーラン。私が知る限り、これはマネージド コードでは発生しないはずです。

開発環境でアプリケーションをデバッグできない場合は、おそらくWindows Debugging Toolsを入手して何が問題なのかを突き止める必要があります。

于 2012-11-16T08:39:53.203 に答える
0

そのために、WER - Microsoft の Windows エラー報告を使用してみることができます。これは、すべてのシステムでデフォルトです。たとえば、Windows ポップアップ メッセージの代わりに自動ダンプを実行できます。
グループ ポリシー エディタには多くの設定があります。次のリンクを参照して ください http://msdn.microsoft.com/en-us/library/windows/desktop/bb787181(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/ Windows/デスクトップ/bb513638%28v=vs.85%29.aspx

于 2012-11-16T08:27:46.753 に答える
-3

クラッシュする可能性があると思われるコードの「危険な」部分でtry catchを使用してください。

于 2012-11-16T08:17:20.003 に答える