Учусь пользоваться avr-gdb, пытаюсь поставить точку остановка на функцию, член-класса.
По
ССЫЛКЕ написано что нужно указывать аргументы принимаемые функцией, т.е. например так
Цитата
(gdb) break TestClass::testFunc(int)
Breakpoint 1 at 0x80485b2: file cpptest.cpp, line 16.
Но когда я пытаюсь проделать аналогичные операции со своим классом, то отладчик выдает следующее сообщение
Цитата
(gdb) break EndItem::showMenu(void)
Function "EndItem::showMenu(void)" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n
Возможно проблема связана с тем что класс EndItem наследует общий базовый класс, в котором присутствуют виртуальные функции. В сокращенном виде описание классов(базового и производного) выглядит следующим образом
Код
namespace Menu {
class BaseClass
{
public:
virtual void showMenu() = 0;
BaseClass()
: returnItem (0), forwardItem (0)
{};
virtual ~BaseClass() {};
};
class EndItem : public BaseClass
{
private:
//..Что-то обьявляем
public:
virtual void showMenu()
{
//..Что-то делаем
};
EndItem(void (*_ShowCurrenMenu)(void), const char * _MenuName)
: ShowCurrenMenu ( _ShowCurrenMenu )
{ };
virtual ~EndItem() {};
};
} //namespace
Насколько я все понял, то такойзапрос должен быть правильным
Цитата
(gdb) break Menu::EndItem.showMenu(void)
т.е. я указал пространство имен (
Menu ), указал класс который меня интересует (
EndItem ) и указал функцию класса (
showMenu() ). но оно все-равно выдает
Цитата
Function "Menu::EndItem::showMenu(void)" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n
Тоже самое пишется, когда я пытаюсь сделать точку останова для функции, принадлежащей обьекту типа
EndItem, например
Код
Menu::EndItem lmSetDevs ( .... );
Цитата
(gdb) break lmSetDevs.showMenu(void)
Что я делаю на так???
Заранее спасибо за помощь!