加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在gdb中打印objective-c类方法的结果?

发布时间:2020-12-15 01:48:56 所属栏目:百科 来源:网络整理
导读:当使用gdb(通过调试控制台)在Xcode 4中调试iPad程序时,我正在尝试打印出运行类方法的结果: (gdb) po [MyClass foo:@"bar"] gdb输出以下内容: No symbol “MyClass” in current context. 有没有办法在Xcode 4中使用gdb打印(NSString *)foo:(NSString *)字
当使用gdb(通过调试控制台)在Xcode 4中调试iPad程序时,我正在尝试打印出运行类方法的结果:

(gdb) po [MyClass foo:@"bar"]

gdb输出以下内容:

No symbol “MyClass” in current context.

有没有办法在Xcode 4中使用gdb打印(NSString *)foo:(NSString *)字符串的结果?

解决方法

问题是你没有在目标源中声明任何类型的MyClass.如果您的MyClass仅设计为具有静态方法,您可以尝试类似的方法

#if DEBUG //gdb Static Method Fix
    MyClass *mc = nil;  //This makes the symbol available
    [mc class];         //supress unused warning
#endif

我的猜测是,通过不在代码中的任何地方声明类的类型,它已经从查找符号中进行了优化.根据我的测试,上面的调用甚至不需要调用它来工作.如果您查看printcmd.c of gdb行#1250,则会打印出错误,这是在调用lookup_minimal_symbol之后发生的.虽然gdb无法在上下文中找到符号,但仍然可以在源代码中仅使用MyClass的静态方法而不使用上述修复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读