xcode如何查看callstack

xcode中查看方法调用的callstack有三种办法,推荐第2种,下面第四种是对异常的trace,需要时也可以用。

1,alloutput输出窗口输入lldb命令:

bt

据说gdb也是bt命令,bt通用啊,哈哈

2,

 NSLog(@"%@",[NSThread callStackSymbols]);


3,加入

#import <execinfo.h>

void PrintBacktrace ( void )

{

  void *callstack[128];

  int frameCount = backtrace(callstack, 128);

  char **frameStrings = backtrace_symbols(callstack, frameCount);

  

  if ( frameStrings != NULL ) {

    // Start with frame 1 because frame 0 is PrintBacktrace()

    for ( int i = 1; i < frameCount; i++ ) {

      printf("%s\n", frameStrings[i]);

    }

    free(frameStrings);

  }

}


4,如果是为了跟踪抛异常时候的callstack,可以把main函数改成下面这样子

#import <UIKit/UIKit.h> 
int main(int argc, char *argv[]) 
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    int retVal; 
    @try 
    { 
        retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
    }
    @catch (NSException *exception) { 
         NSLog(@"Gosh!!! %@", [exception callStackSymbols]); @throw; 
     } 
     @finally 
     { 
          [pool release]; 
     } 
    return retVal; 
}

你可能感兴趣的:(xcode如何查看callstack)