GDB Objective-c调试(无符号表)

时间:2011-03-26 06:56:40

标签: objective-c debugging gdb symbol-table

我有一个可执行文件,我正在使用gdb进行调试。这是我第一次使用gdb,请耐心等待。

我想在函数中设置断点,并且我知道使用类转储的函数的名称。现在它不会让我为该函数添加断点,因为它说没有符号表。我尝试添加符号表但它仍然抱怨没有加载符号表。

那么,无论如何我可以在这种方法中设置断点吗?这是一个客观的c方法,而不是c(如果这有所不同)。我需要做的就是检查这种方法的论点。

1 个答案:

答案 0 :(得分:8)

在类转储中有一个-A选项可以打印函数的地址,例如

@interface FooObject : NSObject
{
}

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

@end

使用此功能,您可以使用以下地址设置断点:

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

请注意,除非您删除了可执行文件,否则应始终可以使用方法名称设置断点

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

(地址与后者跳过一些帧设置代码不同。)