开发者

Is there a way to Track/trace and log all the methods, by Class and Method name, during a debug session?

I am not interested in logging into frameworks or under the covers but only at my source level code upon entry and exit of each method. I would like it to provide Class Name and Method Name and log it to file or at least have it fly by on the screen.

My query is if it is pos开发者_如何学Pythonsible with existing Xcode/Debugger/Instruments facilities, can I implement it in an easy way other than an NSLog statement at every method entry and exit, or is there a commercial tool that provides this capability ?

I'm talking source methods here... not execution processes or threads. Thanks.


Dave Dribin covers precisely this in his article Tracing Objective-C messages.

The part you are after is probably this:

If you set the NSObjCMessageLoggingEnabled environment variable to YES, the Objective-C runtime will log all dispatched Objective-C messages to a file named /tmp/msgSends-<pid>.


Xtrace (https://github.com/johnno1962/Xtrace) has many features and works well for tracing Objective-C. One needs source access to their project, like you appear to have, and can emit messages on entry/exit, like you appear to want.

  • Debug-time configuration - can hard-code or configure tracing while debugging
  • Uncomplicated integration - one .mm and one .h
  • NSRegularExpression matching - classes, methods, types


An alternative which you can use with iOS simulator on the Mac (arm/x86_64)

  1. Create a Symbolic Breakpoint
  2. Symbol: objc_msgSend
  3. Action: Debugger Command
  4. Command:

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

    *p is an alias for expr --

  5. Check: Automatically continue after evaluating actions

Is there a way to Track/trace and log all the methods, by Class and Method name, during a debug session?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜