2016-08-30 2 views
1

Linuxでデバッグするのにgdbを使用しています。しかし、私はこのb d::~d、コンソールに戻りますようにブレークポイントを設定する場合:関数 "d ::〜d"がGDBでブレークポイントを設定するときに定義されていません

機能「D ::〜D」私はデストラクタにブレークポイントを設定することはできません

を定義されていません。ここで はサンプルコードです:しかし

class b 
{ 
    protected: 
    ... 
    public: 
    b(){ 
    ... 
    } 
    ~b() { 
    ... 
    } 
    ... 
} ; 

class d: public b{ 
    protected: 
    ... 
    public: 
    d(){ 
    ... 
    } 
    ~d() { 
    ... 
    } 
    ... 
    p* get(){...}; 
} ; 

、私はBのブレークポイントを設定する:: B、B ::〜BとD ::成功しdは。 私は、コンソールのリターンを '私はB' を入力した後:

ブレークポイント:: DのY 0x0000000000577a6cを保つ取得()../xh:65

で行番号は、権利であります関数名が間違っています。

+1

デストラクタを仮想化しようとしましたか?これは理由ではないかもしれませんが、非仮想的なデストラクタを持つ潜在的なエラーです。 – Hayt

+0

ありがとうございますが、なんらかの理由で、今はできません。@ Hayt –

+0

なぜbd ::〜dできないのか分かりませんが、特定の行番号にブレークポイントを設定しようとすると、特定のファイル – alexeykuzmin0

答えて

0

このように書き直すとどうなりますか?

class b 
{ 
    protected: 
    ... 
    public: 
    b(){ 
    ... 
    } 
    virtual ~b() { 
    ... 
    } 
    ... 
} ; 

class d: public b{ 
    protected: 
    ... 
    public: 
    d(){ 
    ... 
    } 
    ~d() { 
    ... 
    } 
    ... 
    p* get(){...}; 
} ; 
関連する問題