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

发布于 2024-10-27 04:58:04 字数 215 浏览 0 评论 0原文

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

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

那么,我可以在这个方法上设置断点吗?这是一个客观的 c 方法,而不是 c (如果这有区别的话)。我需要做的就是检查这个方法的参数。

I have an executable and I am debugging it using gdb. This is my first time using gdb so bear with me please.

I want to set a breakpoint at a function and I know the name of the function using class dump. Now it won't let me add breakpoint to that function because it say's that there's no symbol table. I tried adding the symbol table but it still complains that no symbol table loaded.

So, is there's anyway I can set a breakpoint at this method? It's an objective c method, not c (If that makes a difference). All I need to do is examine the argument of this method.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜巴黎 2024-11-03 04:58:04

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

@interface FooObject : NSObject
{
}

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

@end

您可以使用该地址设置断点:

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

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

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

(地址不同,因为后者会跳过一些帧设置代码。)

In class-dump there is an -A option will can print the function's address, e.g.

@interface FooObject : NSObject
{
}

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

@end

With this you can set a break point using the address:

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

Note that, unless you have stripped the executable, you should always be possible to set a break point using the method's name

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

(The address isn't the same as the latter skips some frame set-up code.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文