2009-07-29 14 views
14

C#デバッガが正しく動作しません。ブレークポイントやコード行をスキップすることがあります。私は構成マネージャーをチェックしました。私は新しいソリューションファイルにプロジェクトを追加しようとしました。誰か助けてくれますか?C#デバッガがブレークポイントをスキップするのはなぜですか?

+0

最適化は無効になっていますか?デバッグまたはリリース? – Guillaume

+1

「時には」とは何ですか? –

+0

どのように私は最適化をチェックできますか? 何度かは、私がデバッガを使うたびにいくつかの行をスキップした後にスキップすることを意味します。 –

答えて

8

最適化が無効になっていることを確認します(これはDebug設定では無効ですが、Release設定で有効になっています)。コンパイラの最適化は、デバッガを混乱させる可能性があります。

+0

コンパイラの最適化を調整するには –

+0

Visual Studioを使用している場合:ソリューションエクスプローラでプロジェクトを右クリックし、[ビルド]タブを選択します。 「最適化コード」というタイトルのチェックボックスが必要です。 (少なくとも、これはVS 2005と2008に適用されます。以前のバージョンについてはわかりません)。 – Odrade

5

正しくコンパイルされていますか?ビルドが失敗した場合(おそらくコードバグ、おそらくファイルが読み込み専用)、以前のバージョンに対してデバッグしているような気がします。

+0

私はソリューション内の個々のプロジェクトをコンパイルしますが、それでも同じ問題 –

1

ソースコードがPDBファイルと同期していないようです。最も簡単な解決策は、ソリューションを清掃することです(binフォルダからすべてのdllを削除します)。再コンパイルしてから、もう一度実行してみてください。

それでも解決しない場合は、ソリューションを閉じて「obj」フォルダを削除してみてください。そしてもう一度やり直してください。

そしてまた、あなたがデバッグモードでコンパイルされているチェック - 私は は、ブレークポイントに

+0

私はそれを試みましたが、同じ問題 –

23

私のデバッグチェックリストになっていない(「なぜそれが?!ステップスルーされていません」)が多いやった何か:

  • 正しいコードタイプを使用してプロセスにアタッチしていることを確認します。プロセスに管理されていないコードがある場合は、「自動」を使用してデバッグしようとするコードの種類を明示しないでください。
  • モジュデバッグ - >ウィンドウ - >モジュールの場合は、[カスタマイズ...]メニューで有効にする必要があります。
  • デバッグしようとしているアセンブリがロードされていて、シンボルがロードされていることを確認してください - ロードされていない場合は、そのモジュールを右クリックして "シンボルをロード"を選択してください。
  • コードファイルを開き、ブレークポイントを配置します。小さな警告シンボルが表示されたら、それを見て見てください。
  • "ツール - >オプション - >デバッグ - >一般"に移動し、 "自分のコードを有効にする(管理対象のみ)"を解除する必要があるかもしれません。
  • "元のバージョンと正確に一致するようにソースファイルを必要とする"あなたのソースがslighかもしれないと思ったらしかし、間違ったソースを使ってデバッグすると、非常に混乱する可能性があるので注意してください。

特定のケースでは、モジュールがロードされないことがありますデバッガをアタッチします(たとえば、archetecutreにある種のプラグがある場合、最初にプラグインアセンブリをロードするときにのみロードされます)。このような場合は、モジュールをロードする準備が整ったことを確認してください。

+0

そのような詳細な答えのための同じ問題。私はそれを試してみたが、スティルは同じことをした。 –

+3

"Just My Code ..."を無効にすると、私にとってはそれができました。ありがとう。 –

+0

素晴らしいリスト。私を助けました。 – Arnej65

1

メソッド全体をスキップする場合は、ソースを調べ、System.Diagnostics.DebuggerStepThroughAttribute属性が存在するかどうかを確認してください。

名前にもかかわらず、デバッガがメソッドをステップ実行するのを防ぐ。

+0

いいえ、それは数学の真中からいくつかの時間をスキップし、いくつかの時間は完全な数学を終了します。 –

+0

ブリリアント!私は、XSDから生成されたクラスに追加されたカスタムメソッドがデバッグしたくないときには、やっていないと思っていました。その理由は、 'xsd.exe'がこの属性で生成したコードを飾ったからです。 F5より前に作成されたブレークポイントは時々ヒットしましたが、新しいブレークポイントではなく、必ずしもそうではありませんでした。 – ajeh

1

少なくともブレークポイントがヒットする場合は、すべての設定がおそらくOKであることを意味します。

デバッガによるプロパティ評価(少なくともVSはデバッガのプロパティ評価中にブレークポイントをスキップします)またはスパイツール(ただし、これらは通常デバッガでキャッチされます) )。

これが当てはまると思われる場合は、スパイツールとdisable the property evaluation by the debuggerをオフにしてください。

このような場合は、次のような場合があります。たとえば、プロパティがコレクションを返した場合などです。 Count()はプロパティを評価します - したがって、ウォッチウィンドウなどからプロパティのすべての参照を削除してください。

1

これはVS 2017、Tools> Optionsに移動し、Optionsウィンドウの下のDebuggingセクションに移動します。有効 - 「.NET Frameworkソースステッピングを有効にする」

1

「プロジェクトのプロパティ/ビルド/コードの最適化」を無効にすることは私の仕事でした。

関連する問題