Javaの場合、あまりかしこくない方法ですが、エラーだと思われる箇所にSystemOutをプログラムに記入し、どこまでプログラムが通っているのか確認することができると思いますが、C++の場合、どのようにエラーを見つけるのでしょうか。
Javaと同じようにできるのでしょか。
また例外処理を使うしかないのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
エラーの見つけ方ということですが、例外が発生するものはtry~catchで捉えるべきだと思います。デバッガーなら例外発生時に自動で実行を中断してくれるので(設定や環境によるが)、中断時の内容や呼出履歴などである程度は追うことができます。
例外が出ず、戻り値でエラーを判定するのものは、当然ですが戻り値を適切に処理する必要があります。
また、エラーの内容などを確認したい場合は、
- std::coutなどで標準出力に出力する
- OutputDebugString()関数を使って文字列出力をする
- ログファイルに出力する
などが考えられます。std::coutはコンソールアプリだとすぐに確認できますが、そうでない場合はリダイレクトしたりする必要があるので、おすすめはOutputDebugString()です。
Visual Studioのデバッガーなら出力ペインに表示されますし、EXE単体の場合は、DebugViewアプリで表示させることができます。DebugViewはMicrosoftのサイトから自由にダウンロードできます。
投稿2016/01/19 09:07
編集2016/01/19 09:17総合スコア3579
0
C++でもいわゆる「printfデバッグ」と呼ばれる方式で、変数の内容を表示させたりする手法が使えます。あるいは、何らかのフレームワークや開発支援用のライブラリ(WindowsならMFCとかATLとか)で用意されているデバッグ支援のためのマクロなどを利用することもあります。
とはいえ、やはり基本的にはデバッガーですね。IDE(統合開発環境)で開発していれば、ソースコードと関連づけられたGUI操作でデバッグすることができます。
気になるところをブレークポイントで止めてその時点の変数を確認したり、条件分岐のところにブレークポイントを張ってステップ実行で期待通りに分岐できているかどうか確認したりします。また、デバッガーに例外をキャッチさせることもできるので、どこで例外が発生したかを特定することもできます。さらには、変数の値を書き換えてその値を正しく処理できているかを確認したりということもできます。
投稿2016/01/19 07:39
総合スコア5938
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私はC++はWindowsでのVC++ばかりやってきたので、統合開発環境を使ってデバッグすることがほとんどです。
ブレークポイントを置いてステップ実行させたり、その時点の変数の値を確認したりするのに重宝しています (なので、JavaでもEclipseとかがないとなかなか辛いです)。
コマンドラインアプリケーションの場合、printf関数などで通過点を表示させたり、その時点での変数値を表示させたりすることもありますが、Windows上で動作するGUIアプリケーションなどは画面に表示させるために一工夫必要だったりするので、そういう点で便利な開発環境に依存してしまっている、というのが実情です。
投稿2016/01/19 07:35
総合スコア3041
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/21 01:20