2011-02-10 12 views
2

私は、どこかで何らかの形で、stackoverflow例外がスローされるようなかなりの量のusercontrolを使用してUmbracoサイトを持っています。 テストが行​​われているときにSOEが発生しないので、ユーザーが投稿したり、情報を取得したりすることができます(十分に公正なもの:私が逃したもの)。トレースバックStackOverflow例外

私のコード内でスタックオーバーフローの例外が発生した場所をどのように戻すことができますか?再帰的な方法を見逃しているかどうかを調べるためにソースをチェックするツールがありますか?または、実行中のプロセスをどのようにデバッグできますか?

+2

ロギングロギングロギング。 –

+0

IIS拡張ログ、db-callロギング、eventviewers ..作品 - ちょうどどこを正確に見えるように見えることはできません。 – riffnl

答えて

0

デバッグアプリケーションが(時々正しいw3wp.exeプロセスにVSを添付すること)と例外にブレークにVSを設定することが最も有用であることを私が発見しました。同じ一連のメソッド呼び出しでいっぱいになっているスタックトレースが引き続き表示されます。

+0

開発マシン上で - これがうまくいって、私はついに3年以上前に作成されたユーザーとの閏年に満月の間に発生する可能性のある条件のために、特定のページが3つの他のページそれは最初のページをもう一度呼び出すだろう...(私はそれを整理してうれしい!) – riffnl

0

アプリケーションがクラッシュした場合は、すべてのクラッシュのアプリケーションのためのクラッシュダンプを作成するには、このレジストリ設定を有効にします。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps] 
    "DumpFolder"="C:\\TEMP" 
    "DumpCount"=dword:00000010 
    "DumpType"=dword:00000002 

それはあなたのCにクラッシュダンプが作成されます:\ Tempフォルダを。このダンプファイルをVisual Studioの新しいバージョンで開くと、クラッシュした正確なコードが表示されます(デバッグの場所と未処理の例外がある場合のように)。

また、すべてのダンプ解析ニーズに対応する非常に便利なMSツール:デバッグ診断ツール(https://www.microsoft.com/en-us/download/details.aspx?id=49924)。ビデオウォークスルー:https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-123-DebugDiag-Part-3

これはクラッシュしたアプリケーションを分析し、すべてのスレッドとそれらの管理対象および非管理対象のスタックトレースを表示します。 クラッシュの問題とその発生場所を正確に指摘して、スタックトレースをチェックすることができます。

ただし、プログラムがクラッシュしなかった場合は、タスクマネージャを開いてプロセスを右クリックしてダンプファイルを手動で作成できます。クラッシュ解析でこのダンプファイルをDebug Diagnostics(デバッグ診断)で送信すると、アプリケーションでスタックトレースが発生した最後のX例外が表示されます。私はこのメソッドを使用して、ユーザーが素早く簡単なエラーメッセージを受け取ったときに、ユーザーアプリケーションの実際のエラーを見つけます。 taskmanagerからダンプを作成する代わりに、procdump.exeまたはDebug Diagnosticsを使用して、ダンプファイルを作成するタイミングに関するルールを作成することもできます。

DUMPファイルとデバッグ診断プログラムの組み合わせがどれほど簡単で、実稼働環境で発生したエラーを見つけることができるのか、もっと多くの人が気づくはずです。

関連する問題