0

デバッグしていないとき(デバッグビルドを実行しているときでも)問題なく実行される大規模なプロジェクトがあります。

プロジェクトをデバッグしようとすると、実行が特定のMS CCR依存ライブラリにヒットすると、デバッガーは実行を一時停止します。

ソースの分解

この時点でのコールスタックは次のように表示されます。

スタックトレース

これは、スロー された「デバッグ」->「例外...」->「CLR例外」 ユーザー未処理の両方がオフになっている場合でも発生します。

プロジェクトを.net4.5にアップグレードし、最新バージョン(4.0.261.0)を追加してから、Microsoft.Core.Ccr.dllで問題が発生しているようです。Microsoft.Ccr.Core.TaskExecutionWorker.ExecuteTaskHelper(Microsoft.Ccr.Core.ITask currentTask) + 0x94 bytesMicrosoft.Ccr.Core

これらの存在しないブレークポイントに到達すると、プロジェクトの他の時間に関連する部分を正しくデバッグすることがほとんど不可能になるため、これはデバッグ作業にとって大きな不便です。

何がこの動作を引き起こしている可能性があり、VSが問題を無視できるようにするために私が見逃したオプションはありますか?

4

1 に答える 1

0

dotPeekを逆コンパイルするとTaskExecutionWorker.ExecuteTaskHelper、次のように表示されます。

    if (!CausalityThreadContext.IsEmpty(threadCausalities) && 
         CausalityThreadContext.RequiresDebugBreak(threadCausalities))
      Debugger.Break();

彼らがこれを行った理由はわかります (どこかで未処理の例外があります) が、CCR によって取り込まれてしまい、デバッガーで確認できる情報により、このコード定義のブレークポイントがやや無意味になります。

編集

BreakOnReceive = trueDispatcher にCausalities with property を追加したようです。したがって、これは予期される動作です。例外がゴブリングされているため、この設定を使用できる可能性はありません。ここでは、デバッガーを中断するよりも、例外をスローする方が確実に適切です。うーん...

于 2012-06-13T12:13:07.847 に答える