我有一个可执行文件,我正在使用gdb进行调试。这是我第一次使用gdb,请耐心等待。
我想在函数中设置断点,并且我知道使用类转储的函数的名称。现在它不会让我为该函数添加断点,因为它说没有符号表。我尝试添加符号表但它仍然抱怨没有加载符号表。
那么,无论如何我可以在这种方法中设置断点吗?这是一个客观的c方法,而不是c(如果这有所不同)。我需要做的就是检查这种方法的论点。
答案 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
(地址与后者跳过一些帧设置代码不同。)