デフォルト以外のコンストラクターにブレークポイントを設定してデバッグしたいプログラムがありますが、設定したブレークポイントにヒットしません。以下は、この問題が発生するプログラムの例です。メイン関数に設定されたブレークポイントに到達しても問題はありませんが、Domain.cpp ファイルに設定されたブレークポイントは無視されます。
Main.cpp:
#include <iostream>
#include "Domain.h"
int main()
{
Domain y;
std::cout << y.x << std::endl; // <- No problem setting breakpoint here
return 0;
}
ドメイン.cpp:
#include "Domain.h"
Domain::Domain()
{
x = 4; // <- A breakpoint here is skipped
}
ドメイン.h:
#ifndef DOMAIN_H_
#define DOMAIN_H_
class Domain
{
public:
int x;
public:
Domain();
};
#endif /* DOMAIN_H_ */
ただし、すべてを単一のファイルに入れると、問題は発生しません。
Main2.cpp:
#include <iostream>
int main()
{
class Domain
{
public:
int x;
Domain()
{
x = 4; // <- No problem setting breakpoint here now!
};
};
Domain y;
std::cout << y.x << std::endl;
return 0;
}
これはなぜですか?複数のファイルを使用するときにブレークポイントを設定できるようにするには、どうすればこれを変更できますか?
デバッガーをターミナルで手動で実行するときと、Eclipse CDT を介して実行するときの両方で、ブレークポイントが機能していないことを確認できます。
Eclipse CDT がブレークポイントを無視するのはなぜですか?
私は使っている:
- エクリプス・ケプラー
- Mac OS X 10.8.4
- gdb 6.3.5 (アップル版)
- gcc 4.2.1
-O0
と-g3
フラグ付き
しばらくお待ちください。私はまだロープを学んでいます。