2013-05-30 2 views
1

iOS의 Android StackTrace와 같은 스택 추적이 있습니까?Android 스택 트레이스는 iOS와 유사합니까?

Android 스택 추적을 쉽게 찾을 수 있습니다. 울부 짖는 예와 같이, 오류 유형에 맞춰 15 TabChooser.java 클래스에 오류가 java.lang.ArithmeticException: divide by zero

11-21 20:55:47.360: W/System.err(989): java.lang.ArithmeticException: divide by zero 
11-21 20:55:47.379: W/System.err(989): at test.tabs.TabChooser.onCreate(TabChooser.java:15) 
11-21 20:55:47.390: W/System.err(989): at android.app.Activity.performCreate(Activity.java:4465) 

때 생산 (엑스 코드) 및 릴리스에 (장치 로그에 충돌 보고서)

+1

실제로 있습니다. 단순히 인쇄하거나 코드에서 조작해야합니까? –

답변

0

에 당신이 할 수있는 그것을 할 방법 다음 코드를 사용하여 스택 추적을 NSLog에 인쇄하십시오.

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

하거나 다른 당신이

에 의해 시뮬레이터 로그를 얻을 수 있습니다 열기 터미널 및 유형 : tail -f /var/log/system.log

그런 다음 시뮬레이터를 실행합니다.

0

#include <execinfo.h> 선언 : 당신은 아주 쉽게 역 추적 정보를 구성하는 데 사용할 수있는

int backtrace(void**,int) 
    __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 

char** backtrace_symbols(void* const*,int) 
    __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 

.

이러한 함수 호출은 수행해야하며 기본적으로 catch-all 처리기가 없음에 유의하십시오. 따라서 하드웨어 및 API 예외를 지원하는 방법을 고려해야합니다 (개인적으로는 지원하지 않지만이 도메인의 치명적인 오류는 매우 드뭅니다).

사람 : https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/backtrace_symbols.3.html

사용 예 : http://tdistler.com/2008/11/15/how-to-print-a-stack-backtrace-programatically-in-linux

가 C에 대한 이름을 분해 해제하기 ++ 기호는 별도의 단계입니다.