[PATCH] [libcxxabi] Improve logging of aborts for Android.
Dan Albert
danalbert at google.com
Mon Aug 18 17:43:51 PDT 2014
Hi jroelofs,
In Android, stderr only goes to the console, and as such will only ever be seen by adb shell users. Since very few developers will ever actually see that, also send the abort message to logcat and the tombstone.
http://reviews.llvm.org/D4964
Files:
src/abort_message.cpp
Index: src/abort_message.cpp
===================================================================
--- src/abort_message.cpp
+++ src/abort_message.cpp
@@ -12,9 +12,14 @@
#include <stdarg.h>
#include "abort_message.h"
+#ifdef __BIONIC__
+#include <android/set_abort_message.h>
+#include <syslog.h>
+#endif
+
#pragma GCC visibility push(hidden)
-#if __APPLE__
+#if __APPLE__
# if defined(__has_include) && __has_include(<CrashReporterClient.h>)
# define HAVE_CRASHREPORTERCLIENT_H 1
# include <CrashReporterClient.h>
@@ -33,15 +38,29 @@
vfprintf(stderr, format, list);
va_end(list);
fprintf(stderr, "\n");
-
+
#if __APPLE__ && HAVE_CRASHREPORTERCLIENT_H
// record message in crash report
char* buffer;
va_list list2;
va_start(list2, format);
vasprintf(&buffer, format, list2);
va_end(list2);
CRSetCrashLogMessage(buffer);
+#elif __BIONIC__
+ char* buffer;
+ va_list list2;
+ va_start(list2, format);
+ vasprintf(&buffer, format, list2);
+ va_end(list2);
+
+ // Show error in tombstone.
+ android_set_abort_message(buffer);
+
+ // Show error in logcat.
+ openlog("libc++abi", 0, 0);
+ syslog(LOG_CRIT, "%s", buffer);
+ closelog();
#endif
abort();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4964.12635.patch
Type: text/x-patch
Size: 1263 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140819/8452f87c/attachment.bin>
More information about the cfe-commits
mailing list