mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2025-12-27 01:35:06 +01:00
Add MD_OS_ANDROID definition.
In order to better distinguish Android and Linux minidumps, introduce a new MD_OS_ANDROID definition, and modify related source code accordingly. Also append the build-fingerprint to the minidump location descriptor. This gives more information about the system image the device runs on. Review URL: https://breakpad.appspot.com/405002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@981 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
7db2fb7b93
commit
8d96707553
5 changed files with 38 additions and 1 deletions
|
|
@ -53,6 +53,9 @@
|
|||
#include <link.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#if defined(__ANDROID__)
|
||||
#include <sys/system_properties.h>
|
||||
#endif
|
||||
#if !defined(__ANDROID__)
|
||||
#include <sys/ucontext.h>
|
||||
#include <sys/user.h>
|
||||
|
|
@ -1246,7 +1249,11 @@ class MinidumpWriter {
|
|||
}
|
||||
|
||||
bool WriteOSInformation(MDRawSystemInfo* sys_info) {
|
||||
#if defined(__ANDROID__)
|
||||
sys_info->platform_id = MD_OS_ANDROID;
|
||||
#else
|
||||
sys_info->platform_id = MD_OS_LINUX;
|
||||
#endif
|
||||
|
||||
struct utsname uts;
|
||||
if (uname(&uts))
|
||||
|
|
@ -1283,6 +1290,23 @@ class MinidumpWriter {
|
|||
space_left -= info_len;
|
||||
}
|
||||
|
||||
#ifdef __ANDROID__
|
||||
// On Android, try to get the build fingerprint and append it.
|
||||
// Fail gracefully because there is no guarantee that the system
|
||||
// property will always be available or accessible.
|
||||
char fingerprint[PROP_VALUE_MAX];
|
||||
int fingerprint_len = __system_property_get("ro.build.fingerprint",
|
||||
fingerprint);
|
||||
// System property values shall always be zero-terminated.
|
||||
// Be paranoid and don't trust the system.
|
||||
if (fingerprint_len > 0 && fingerprint_len < PROP_VALUE_MAX) {
|
||||
const char* separator = " ";
|
||||
if (!first_item)
|
||||
strlcat(buf, separator, buf_len);
|
||||
strlcat(buf, fingerprint, buf_len);
|
||||
}
|
||||
#endif
|
||||
|
||||
MDLocationDescriptor location;
|
||||
if (!minidump_writer_.WriteString(buf, 0, &location))
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue