首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在gdb中打印objective类方法的结果?

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

Stack Overflow用户
提问于 2011-04-25 21:11:52
回答 2查看 741关注 0票数 7

当使用gdb (通过调试控制台)调试Xcode 4中的iPad程序时,我试图打印出运行类方法的结果:

代码语言:javascript
复制
(gdb) po [MyClass foo:@"bar"]

全球开发银行的产出如下:

当前上下文中没有符号"MyClass“。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-26 13:09:00

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

代码语言:javascript
复制
#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的静态方法,而不使用上面的修复方法仍然很好。

票数 6
EN

Stack Overflow用户

发布于 2011-11-22 07:58:54

我也有同样的问题,here。在我的例子中,解决方案是像这样使用NSClassFromString

代码语言:javascript
复制
po [NSClassFromString(@"MyClass") foo:@"bar"]
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5783340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档