2013-02-20 5 views
2

Когда родная часть (C++, Qt) моей программы разбилась, я вижу в logcat некоторый стек. Но эти сообщения не имеют имени приложения, только тега «DEBUG». Вот почему я не могу получить его для отправки отчета о сбоях (я использую ACRA) beacuse ", поскольку JellyBean logcat предоставляет только следы из вашего собственного приложения" Как я могу получить его или сделать, что они писали от имени моего приложения?android get Stacktrace из собственного кода в LogCat

Извините за мой плохой английский, Спасибо!

ответ

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

Или выбросить исключения. –

+0

Это уже было задано здесь - http://stackoverflow.com/questions/8415032/catching-exceptions-thrown-from-native-code-running-on-android – sandrstar

+0

Спасибо, но это не то, что я имел в виду. У меня уже есть эта функция, но они не используются системными библиотеками, которые печатают stacktrace в обработчике SIGSEGV, например ... Я могу установить обработчик для SIGSEGV, но не знаю, как получить из него стек. – Dmitry