2

デフォルト以外のコンストラクターにブレークポイントを設定してデバッグしたいプログラムがありますが、設定したブレークポイントにヒットしません。以下は、この問題が発生するプログラムの例です。メイン関数に設定されたブレークポイントに到達しても問題はありませんが、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フラグ付き

しばらくお待ちください。私はまだロープを学んでいます。

4

2 に答える 2

2

この GDBのバグに遭遇している可能性があります。

このバグは長い間修正されてきましたが、お使いの GDB のバージョンは非常に古いです (Apple が更新する可能性は低いです)。

于 2013-08-06T03:06:47.880 に答える