gpt4 book ai didi

Objective-C - 使用 GDB 打印方法参数

转载 作者:行者123 更新时间:2023-12-03 22:48:59 26 4
gpt4 key购买 nike

我正在努力使用 GDB 调试我的 Objective-C 程序。我有一个功能 - (NSString *)reverse:(NSString *)someString我想调试。

这是我设置断点的方法:

(gdb) break -[MyClass reverse:]

现在,当代码到达断点时,我该如何打印地址,甚至更好地打印 self 的值和方法论点?我做了一些谷歌搜索,发现了类似 po $rdx 的建议但我没有发现任何作品。

我该如何解决这个问题?

最佳答案

克拉克·考克斯 (Clark Cox) 写了我所找到的最好的解释。我一直引用这个页面,并制作了一份本地副本,以防它消失。

http://www.clarkcox.com/blog/2009/02/04/inspecting-obj-c-parameters-in-gdb/

x86_64 和非浮点参数的快速版本是:

first ObjC arg => $rdx
second ObjC arg => $rcx
third ObjC arg => $r8
fourth ObjC arg => $r9

请记住,传递给方法的前两件事(在 $rdi 和 $rsi 中)是 self_cmd .我不计算这里的那些。

如果您要传递浮点数、结构体或四个以上的参数,事情会变得更加复杂,您应该阅读 AMD64 ABI 中的调用约定。第 3.2.3 节。如果您正在处理 i386、PPC 或 ARM,请参阅 Clark 的帖子,该帖子很好地涵盖了常见情况的这些情况。

关于Objective-C - 使用 GDB 打印方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8174414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com