3

Visual Studioなどを使用してプログラムを作成していたことが何度かありましたが、どこかで途切れがちです。当然、私の最初の考えは、プログラムの早い段階でブレークポイントを設定してから、エラーが発生するまでコードを1行ずつゆっくりとステップ実行することです。

しかし、デバッガーでコードをゆっくりとステップ実行すると、すべてが正しく機能することがよくあります。ただし、ブレークポイントなしでプログラムを実行しようとすると、問題が発生します。

なぜこれが起こるのですか?コードを1行ずつステップ実行することは、プログラムをdubugモードで実行することと実際には異なりますか?

(私はデバッグとリリースについて話しているのではなく、デバッグと行ごとのデバッグについて話している)

4

3 に答える 3

3

理由の 1 つは、複数の実行中のスレッド間でタイミングの問題が発生することです。この問題は、プログラムが "全速力" で実行されている場合と、デバッガーでスレッドを一時停止している場合とで異なります。

于 2013-02-27T15:24:14.837 に答える
0

これは、コードをステップ実行するときに正しく発生するように見えるが、実行時には発生しない、いくつかのスレッドセーフでない操作が原因である可能性があります。デバッグビルドを実行していることが確実であるため、コンパイラの最適化は除外されます。

于 2013-02-27T15:18:20.853 に答える
0

デバッガー内で実行すると、たとえばのランタイムオプションが大幅に変更されます。エラーを検出してユーザーに表示できるように、ヒープ操作。

ここを参照してください。

プロセスが任意のデバッガーで実行されると、プロセス内のすべてのヒープに対して特定のヒープ デバッグ オプションが自動的に有効になります。

これは確かにあなたの問題ではありませんが、可能性の高い候補です。

于 2013-02-27T15:22:10.923 に答える