2013-02-20 24 views
2

當我的程序的本地部分(C++,Qt)崩潰時,我在logcat中看到一些堆棧跟蹤。但是這個消息沒有應用程序名稱,只有「DEBUG」標籤。這就是爲什麼我無法得到它發送崩潰報告(我使用ACRA)因爲「JellyBean logcat只提供你自己的應用程序的痕跡」 我怎麼能得到它或做他們正在寫我的應用程序的名稱?android從LogCat中的本地代碼獲取Stacktrace

對不起,我的英文不好, 謝謝!

回答

2

您可以使用下面的方法(結帳this thread): 創建頭具有以下內容:

#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

+0

或拋出異常。 – 2013-02-20 11:09:04

+0

它已經在這裏問 - http://stackoverflow.com/questions/8415032/catching-exceptions-thrown-from-native-code-running-on-android – sandrstar 2013-02-20 11:12:29

+0

謝謝,但它不是我想到的。我已經有了這個函數,但是它們並沒有被在SIGSEGV處理程序中打印stacktrace的系統庫使用,例如...我可以爲SIGSEGV設置我的處理程序,但不知道如何從它獲取堆棧跟蹤... – Dmitry 2013-02-20 11:55:59