Android получает Stacktrace из собственного кода в LogCat

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

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


person Dmitry    schedule 20.02.2013    source источник


Ответы (1)


Вы можете использовать следующий способ (ознакомьтесь с этой веткой) : создать заголовок со следующим содержимым:

#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 напрямую.

person sandrstar    schedule 20.02.2013
comment
Здесь уже спрашивали - stackoverflow.com/questions/8415032/ - person sandrstar; 20.02.2013
comment
Спасибо, но это не то, что я имел в виду. У меня уже есть эта функция, но они не используются системными библиотеками, которые печатают трассировку стека в обработчике SIGSEGV, например... Я могу настроить свой обработчик для SIGSEGV, но не знаю, как получить из него трассировку стека... - person Dmitry; 20.02.2013
comment
о, кажется, это продолжение groups.google .com/forum/#!msg/android-developers/6U4A5irWang/ обсуждение - person sandrstar; 20.02.2013