Установка точки останова в GDB - PullRequest
6 голосов
/ 07 декабря 2011

У меня есть функция, которая возвращает указатель:

static void *find_fit(size_t asize);

Я хотел бы установить точку останова в GDB, но когда я набираю это имя функции, я получаю одну из следующих ошибок:

break *find_fit
Function "*find_fit" not defined

или

break find_fit
Function "find_fit" not defined

Я могу легко установить точку останова для функции, которая возвращает что-то отличное от указателя, но когда функция возвращает указатель, GDB, похоже, не хочет прерывать его.

Кто-нибудь видит, что происходит? Спасибо!

1 Ответ

4 голосов
/ 07 декабря 2011

По некоторым причинам GDB неправильно обрабатывает искажение имен в C ++. Обычно вам не нужно ничего трогать, чтобы это работало. Вы можете попробовать show language. Обычно он установлен на auto. Вы также можете попробовать вручную установить его с помощью set language c++.

Чтобы проверить, вы можете просто набрать

b 'find<tab>

(это символ табуляции, а не символы "<tab>"), и он должен попытаться автоматически заполнить название функции для вас. В C ++ вам нужны типы аргументов, чтобы знать функцию, но это не на 100% соответствует тому, что вы видите, потому что, если вы дадите gdb имя функции без аргументов, она обычно будет делать правильные вещи или запрашивать какие версия функции, которую вы хотите. Вы не видите ни одного из них.

...