2016-08-19 283 views
2

下記のコードでprintfにブレークポイントを設定すると(eclispe内)、デバッグ中にscanfで実行が停止してxの値を取得せずprintf文でのみ直接停止してください。結果はデバッグ中にxに入ることはできません。scanf()文を持つeclipseでCプログラムをデバッグできません

int main(void) { 

    int x; 

    scanf("%d", &x); 
    printf("Entered value of x is : %d \n", x); 
    return EXIT_SUCCESS; 
} 
+0

'fflush()'を追加できますか?問題が分かっているようです:https://www.eclipse.org/forums/index.php/t/805830/ –

+0

私はすでに試してみました。それは動作しません。 –

答えて

1

あなたが最適化してコンパイルする場合は、(GCCで - -O0に変更-Ox)、それを無効にしてみてください。

最適化が有効になっている場合、連続したソース行に対して生成されたアセンブルされたコードがシャッフルされる可能性があります。printfで「ステップイン」すると、カーソル位置はscanfに戻ります。

+0

私もそれをしました。 '-O0 -g3 -Wall -c -fmessage-length = 0' –

+0

これを試すこともできます:逆アセンブル表示に切り替えて、' main'の最初の命令にブレークポイントを挿入してプログラムを再起動してください。 – monkeyman79

+0

Windowsの「設定」 - > C/C++ - > GDBの「メイン」入力で「起動時に停止」オプションをチェックしようとしました これは意味ですか? ...私はそれを試して、それは動作します!ありがとう! –

関連する問題