2013-02-20 1 views
2

내 프로그램의 네이티브 부분 (C++, Qt)이 충돌했을 때 logcat에서 일부 스택 추적을 볼 수 있습니다. 그러나이 메시지에는 응용 프로그램 이름이 없으며 "DEBUG"태그 만 있습니다. 그렇기 때문에 JellyBean logcat이 자신의 앱에서 흔적 만 제공하기 때문에 충돌 보고서 (ACRA 사용)를 보내면받을 수 없습니다. 내 애플리케이션 이름으로 어떻게 가져올 수 있습니까?android는 LogCat의 원시 코드에서 Stacktrace를 얻습니다.

죄송합니다, 저의 영어, 고마워요! 다음과 같은 내용으로 헤더를 만들 :

#include <android/log.h> 

#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "libnav", 
__VA_ARGS__) 
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "libnav", 
__VA_ARGS__) 
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO , "libnav", 
__VA_ARGS__) 
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN , "libnav", 
__VA_ARGS__) 
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , "libnav", 
__VA_ARGS__) 

#endif // ANDROID_ALOG_H 

를하거나 직접 __android_log_print를 사용

답변

2

당신은 다음과 같은 방법으로 (체크 아웃 this thread)를 사용할 수 있습니다.

+0

예외를 던지십시오. –

+0

그것은 이미 여기에서 물었습니다 - http://stackoverflow.com/questions/8415032/catching-exceptions-thrown-from-native-code-running-on-android – sandrstar

+0

고마워요.하지만 제가 생각했던 것만은 아닙니다. 이 함수는 이미 가지고 있지만 SIGSEGV 핸들러에서 스택 트레이스를 인쇄하는 시스템 라이브러리에서는 사용하지 않습니다 ... SIGSEGV에 대한 핸들러를 설정할 수는 있지만 스택 트레이스를 얻는 방법은 모르겠지만 ... – Dmitry