質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

2599閲覧

C++のエラーの見つけ方

saito.kaz

総合スコア76

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/01/19 07:10

Javaの場合、あまりかしこくない方法ですが、エラーだと思われる箇所にSystemOutをプログラムに記入し、どこまでプログラムが通っているのか確認することができると思いますが、C++の場合、どのようにエラーを見つけるのでしょうか。
Javaと同じようにできるのでしょか。

また例外処理を使うしかないのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saito.kaz

2016/01/21 01:20

ありがとうございます。 勉強になります。
guest

0

C++でもいわゆる「printfデバッグ」と呼ばれる方式で、変数の内容を表示させたりする手法が使えます。あるいは、何らかのフレームワークや開発支援用のライブラリ(WindowsならMFCとかATLとか)で用意されているデバッグ支援のためのマクロなどを利用することもあります。

とはいえ、やはり基本的にはデバッガーですね。IDE(統合開発環境)で開発していれば、ソースコードと関連づけられたGUI操作でデバッグすることができます。
気になるところをブレークポイントで止めてその時点の変数を確認したり、条件分岐のところにブレークポイントを張ってステップ実行で期待通りに分岐できているかどうか確認したりします。また、デバッガーに例外をキャッチさせることもできるので、どこで例外が発生したかを特定することもできます。さらには、変数の値を書き換えてその値を正しく処理できているかを確認したりということもできます。

投稿2016/01/19 07:39

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saito.kaz

2016/01/21 01:21

ありがとうございます。 とても参考になりました。
guest

0

私はC++はWindowsでのVC++ばかりやってきたので、統合開発環境を使ってデバッグすることがほとんどです。
ブレークポイントを置いてステップ実行させたり、その時点の変数の値を確認したりするのに重宝しています (なので、JavaでもEclipseとかがないとなかなか辛いです)。

コマンドラインアプリケーションの場合、printf関数などで通過点を表示させたり、その時点での変数値を表示させたりすることもありますが、Windows上で動作するGUIアプリケーションなどは画面に表示させるために一工夫必要だったりするので、そういう点で便利な開発環境に依存してしまっている、というのが実情です。

投稿2016/01/19 07:35

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saito.kaz

2016/01/21 01:23

ありがとうございます。 やはりprintfですね。 参考になります。
guest

0

こんにちは。

C++言語の場合、std::coutが標準出力です。#include <iostream>すれば使えるようになります。
std::cout << "Test Data=" << 100 << std::endl;などとします。

printf()を使う人も多いですが、既にprintf()に慣れているわけでないなら、std::coutを使うことをお勧めします。printf()に慣れていると一見面倒に見えますが、実はstd::coutの方が書式指定ミスがほとんどないのでデバッグ時には凄く楽です。

投稿2016/01/19 07:28

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saito.kaz

2016/01/21 01:23

std::coutを実際に試しました。 ありがとうございます。 役立ちます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問