Отладка GDB Objective-c (без таблицы символов) - PullRequest
4 голосов
/ 26 марта 2011

У меня есть исполняемый файл, и я отлаживаю его с помощью GDB. Я впервые использую GDB, так что потерпите меня, пожалуйста.

Я хочу установить точку останова для функции, и я знаю имя функции, используя класс dump. Теперь он не позволит мне добавить точку останова к этой функции, потому что он говорит, что нет таблицы символов. Я попытался добавить таблицу символов, но все равно жалуется, что таблица символов не загружена.

Итак, есть ли способ установить точку останова для этого метода? Это объективный метод c, а не c (если это имеет значение). Все, что мне нужно сделать, это изучить аргумент этого метода.

1 Ответ

8 голосов
/ 26 марта 2011

В class-dump есть опция -A, которая может напечатать адрес функции, например,

@interface FooObject : NSObject
{
}

- (void)y;  // IMP=0x100000d54

@end

. При этом вы можете установить точку останова, используя адрес:

(gdb) b *0x100000d54
Breakpoint 1 at 0x100000d54

Обратите внимание, что, если вы не удалили исполняемый файл, у вас всегда должна быть возможность установить точку останова, используя имя метода

(gdb) b -[FooObject y]
Breakpoint 2 at 0x100000d60

(адрес не совпадает с последним, пропускает некоторый набор кадров -код.)

...