2017-06-14 12 views
-1

私は100の関数を持つC++プログラムを持っており、各関数は100個のローカル変数を持ち、それぞれ1D、多分2D、多分3D、おそらく動的に割り当てられた配列です。 今私はプログラムをデバッグしているので、すべての変数が正しいかどうかをチェックする必要があります。今すぐ私は自分のファイルにfprintf()を入れて、ファイルのデータをチェックします。しかし、私は多くの多くのfprintf()ステートメントとfopen(), fclose()ステートメントをプログラムに書く必要がありますが、これはかなり醜いです。多くのデータをチェックするC++プログラムをデバッグするには?

これを単純化したり、場合によっては自動化する方法やツールがありますか?

+0

この質問は、コード、出力、期待される出力を投稿してください。 – uzr

+4

あなたが記述したようなプログラムを持っていれば、*デバッグはしません。あなたはそれを投げ捨てて、ドローイングボードに戻って、新しく改良されたデザインですべてを始める。そのようなプログラムは基本的には維持できません。 –

+0

特定のコードに固有の問題がありますか?それとも純粋に理論的な質問ですか? – HolyBlackCat

答えて

1

デバッガを使用することはできますが、すべてを自分でチェックする必要があります。 すべてを自動的にチェックしたい場合は、単体テストを書いて実行してください。

0

と100ローカル変数

と各機能あなたの問題があります。各機能が100行になるようにカットしてください(それでもなおそれが大きすぎます)。あなたは戦うチャンスがあります。

0

グローバルログファイルを作成して一度開閉してください。 デバッグプリントは強力なツールですが、結果ファイルを比較するツール(自分自身を書く)も必要になると思います。

0

@UKMonkeyは既に、あなたの関数は100個のローカル変数を持つべきではないと言っています。最も良い方法は、各行にの最大25行と最大80文字の機能を持つことです。これにより、デバッグが容易になり、他の人がコードを理解できるようになります。

さらに、Linuxやその他のUNIXベースの(UNIXベースの)システムを使用している場合は、デバッグにGDBを使用できます。アプリケーションをコンパイルしてgcc/g ++に-gフラグを与え、GDBを使って実行してください。

$ g++ -g example.cpp -o example.out 
$ gdb ./example.out 

ここで、ブレークポイントを追加して変数の値を印刷することができます。詳細はGDB manualを参照してください。

関連する問題