libutils: RefBase DEBUG_REF love
Done here: - path saved to a useable location on host - path always printed (for visibility for new users) - open(.., 666) - That's '01204' not '0644' oops Future considerations: - make defines constexpr instead of ifdef - copy malloc hook design to avoid needing to recompile code - make libutilscallstack default on host - run libutils tests, not just test compile debug mode - code incorrectly prints ref 'doesn't exist' seems it's gotten out of sync, but still good enough to use stacktraces Bug: 244325464 Test: manual Change-Id: I732e5b8aec3cd946ef3559a2a814caf693846cc0
This commit is contained in:
parent
377adea81c
commit
b7412c8cd6
1 changed files with 6 additions and 2 deletions
|
@ -49,7 +49,11 @@
|
|||
|
||||
// folder where stack traces are saved when DEBUG_REFS is enabled
|
||||
// this folder needs to exist and be writable
|
||||
#ifdef __ANDROID__
|
||||
#define DEBUG_REFS_CALLSTACK_PATH "/data/debug"
|
||||
#else
|
||||
#define DEBUG_REFS_CALLSTACK_PATH "."
|
||||
#endif
|
||||
|
||||
// log all reference counting operations
|
||||
#define PRINT_REFS 0
|
||||
|
@ -324,11 +328,11 @@ public:
|
|||
char name[100];
|
||||
snprintf(name, sizeof(name), DEBUG_REFS_CALLSTACK_PATH "/%p.stack",
|
||||
this);
|
||||
int rc = open(name, O_RDWR | O_CREAT | O_APPEND, 644);
|
||||
int rc = open(name, O_RDWR | O_CREAT | O_APPEND, 0644);
|
||||
if (rc >= 0) {
|
||||
(void)write(rc, text.string(), text.length());
|
||||
close(rc);
|
||||
ALOGD("STACK TRACE for %p saved in %s", this, name);
|
||||
ALOGI("STACK TRACE for %p saved in %s", this, name);
|
||||
}
|
||||
else ALOGE("FAILED TO PRINT STACK TRACE for %p in %s: %s", this,
|
||||
name, strerror(errno));
|
||||
|
|
Loading…
Reference in a new issue