2016-08-30 5 views
1

Я использую gdb для отладки в Linux. Но когда я поставил точку останова, как этот b d::~d, консоль возвращается:Функция «d :: ~ d» не определена при установке точки останова с помощью GDB

Функция «D :: ~ d» не определены

Я не могу установить точку останова в деструкторе. Вот пример кода:

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

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

Однако, я установил изломов б :: б, б :: ~ Ь и d :: успешно d. После того как я типа в 'я б', консоль возвращается:

точки останова Keep у 0x0000000000577a6c в D :: Get() в ../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(){...}; 
} ;