3

Socketの一連のメソッドを使用するコンソールアプリケーションを作成しましたが *Async、時々クラッシュします。同期されたコードのように例外がどこにスローされたかは表示されません。コンソールがシャットダウンするだけで、何が間違っているのかわかりません。

try/catchブロックをどこに置くかを知らなくても、このような非同期操作に関して例外を検出する方法はありますか?

必要なのは、コードのどの部分がアプリケーションをクラッシュさせるかを知ることだけです。

編集:

未処理の例外の通常のことは、Visual Studioを使用してコードをデバッグしているときに、実行を一時停止し、例外(または少なくとも例外メッセージ)の原因となったコード行を表示することです。ただし、状況によっては(IOCPなどの低レベルAPIとの対話など)、プログラムがクラッシュし、原因に関する情報がないままデバッグが終了する場合があります。

私が必要としているのは、その特定の例外を確認する方法です。
「何が起こったのか、どこで(どのメソッドで)起こったので、プログラムがクラッシュしたのですか?」

ですから、「何を間違えたのか」ではなく、「何を間違えたのかをどうやって知ることができるのか」と問いかけます。

  • 例外がスローされた時点で実行を中断できますか?
  • クラッシュ後の呼び出しスタックを確認して、原因となったメソッドを特定できますか?
  • このような状況を回避するためのアドバイスをお願いします。
4

2 に答える 2

0

をクリックしDebug-menu -> Exceptionsます。必ずCommon Language Runtime Exceptions投げられます。IDEがこのオプションのチェックを外すことがあります。理由はわかりませんが、面倒です。

于 2012-08-30T08:41:40.587 に答える
0

System.Netロギングを有効にして、その下で何が起こっているかを確認します

于 2012-08-30T10:09:36.327 に答える