有没有办法在调试会话期间按类和方法名称跟踪/跟踪和记录所有方法?

时间:2011-07-30 22:27:34

标签: objective-c xcode debugging tracing

我对登录框架或在封面下不感兴趣,但只有在每个方法进入和退出时才在我的源代码中。我希望它提供类名和方法名称并将其记录到文件中,或者至少让它在屏幕上显示。

我的查询是,如果可以使用现有的Xcode / Debugger / Instruments工具,我是否可以在每个方法入口和出口处以除了NSLog语句之外的简单方式实现它,或者是否有提供此功能的商业工具?

我在这里谈论源方法......不是执行进程或线程。感谢。

3 个答案:

答案 0 :(得分:9)

Dave Dribin在他的文章Tracing Objective-C messages中正是如此。

你所追求的部分可能就是这样:

  

如果将NSObjCMessageLoggingEnabled环境变量设置为YES,则Objective-C运行时会将所有已分派的Objective-C消息记录到名为/tmp/msgSends-<pid>.

答案 1 :(得分:2)

Xtrace(https://github.com/johnno1962/Xtrace)具有许多功能,可以很好地跟踪Objective-C。一个人需要源代码访问他们的项目,就像你看起来一样,并且可以在进入/退出时发出消息,就像你想要的那样。

  • 调试时配置 - 可以在调试时硬编码或配置跟踪
  • 简单的集成 - 一个.mm和一个.h
  • NSRegularExpression匹配 - 类,方法,类型

答案 2 :(得分:0)

在Mac(arm / x86_64)上可以与iOS simulator一起使用的替代方法

  1. 创建一个Symbolic Breakpoint
  2. 符号:objc_msgSend
  3. 操作:Debugger Command
  4. 命令:

    p (void)printf("[%s, %s]\n", (char*)object_getClassName($arg1), $arg2)
    

    * pexpr --

  5. 的别名
  6. 检查:Automatically continue after evaluating actions