Merge "Move BACKTRACE_NO_TID to BACKTRACE_CURRENT_THREAD."
This commit is contained in:
commit
6e25786914
4 changed files with 24 additions and 17 deletions
|
@ -28,8 +28,8 @@ __BEGIN_DECLS
|
|||
// thread from the current process will be traced.
|
||||
#define BACKTRACE_CURRENT_PROCESS -1
|
||||
// When the tid to be traced is set to this value, then trace the specified
|
||||
// pid.
|
||||
#define BACKTRACE_NO_TID -1
|
||||
// current thread of the specified pid.
|
||||
#define BACKTRACE_CURRENT_THREAD -1
|
||||
|
||||
#define MAX_BACKTRACE_FRAMES 64
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ public:
|
|||
|
||||
// Immediately collect the stack traces for the specified thread.
|
||||
// The default is to dump the stack of the current call.
|
||||
void update(int32_t ignoreDepth=1, pid_t tid=BACKTRACE_NO_TID);
|
||||
void update(int32_t ignoreDepth=1, pid_t tid=BACKTRACE_CURRENT_THREAD);
|
||||
|
||||
// Dump a stack trace to the log using the supplied logtag.
|
||||
void log(const char* logtag,
|
||||
|
|
|
@ -219,12 +219,12 @@ bool BacktracePtrace::ReadWord(uintptr_t ptr, uint32_t* out_value) {
|
|||
|
||||
Backtrace* Backtrace::Create(pid_t pid, pid_t tid, backtrace_map_info_t* map_info) {
|
||||
if (pid == BACKTRACE_CURRENT_PROCESS || pid == getpid()) {
|
||||
if (tid == BACKTRACE_NO_TID || tid == gettid()) {
|
||||
if (tid == BACKTRACE_CURRENT_THREAD || tid == gettid()) {
|
||||
return CreateCurrentObj(map_info);
|
||||
} else {
|
||||
return CreateThreadObj(tid, map_info);
|
||||
}
|
||||
} else if (tid == BACKTRACE_NO_TID) {
|
||||
} else if (tid == BACKTRACE_CURRENT_THREAD) {
|
||||
return CreatePtraceObj(pid, pid, map_info);
|
||||
} else {
|
||||
return CreatePtraceObj(pid, tid, map_info);
|
||||
|
|
|
@ -143,7 +143,8 @@ void VerifyLevelDump(const backtrace_t* backtrace) {
|
|||
void VerifyLevelBacktrace(void*) {
|
||||
backtrace_context_t context;
|
||||
|
||||
ASSERT_TRUE(backtrace_create_context(&context, BACKTRACE_CURRENT_PROCESS, BACKTRACE_NO_TID, 0));
|
||||
ASSERT_TRUE(backtrace_create_context(&context, BACKTRACE_CURRENT_PROCESS,
|
||||
BACKTRACE_CURRENT_THREAD, 0));
|
||||
|
||||
VerifyLevelDump(context.backtrace);
|
||||
|
||||
|
@ -165,7 +166,8 @@ void VerifyMaxDump(const backtrace_t* backtrace) {
|
|||
void VerifyMaxBacktrace(void*) {
|
||||
backtrace_context_t context;
|
||||
|
||||
ASSERT_TRUE(backtrace_create_context(&context, BACKTRACE_CURRENT_PROCESS, BACKTRACE_NO_TID, 0));
|
||||
ASSERT_TRUE(backtrace_create_context(&context, BACKTRACE_CURRENT_PROCESS,
|
||||
BACKTRACE_CURRENT_THREAD, 0));
|
||||
|
||||
VerifyMaxDump(context.backtrace);
|
||||
|
||||
|
@ -232,15 +234,18 @@ void VerifyIgnoreFrames(
|
|||
|
||||
void VerifyLevelIgnoreFrames(void*) {
|
||||
backtrace_context_t all;
|
||||
ASSERT_TRUE(backtrace_create_context(&all, BACKTRACE_CURRENT_PROCESS, BACKTRACE_NO_TID, 0));
|
||||
ASSERT_TRUE(backtrace_create_context(&all, BACKTRACE_CURRENT_PROCESS,
|
||||
BACKTRACE_CURRENT_THREAD, 0));
|
||||
ASSERT_TRUE(all.backtrace != NULL);
|
||||
|
||||
backtrace_context_t ign1;
|
||||
ASSERT_TRUE(backtrace_create_context(&ign1, BACKTRACE_CURRENT_PROCESS, BACKTRACE_NO_TID, 1));
|
||||
ASSERT_TRUE(backtrace_create_context(&ign1, BACKTRACE_CURRENT_PROCESS,
|
||||
BACKTRACE_CURRENT_THREAD, 1));
|
||||
ASSERT_TRUE(ign1.backtrace != NULL);
|
||||
|
||||
backtrace_context_t ign2;
|
||||
ASSERT_TRUE(backtrace_create_context(&ign2, BACKTRACE_CURRENT_PROCESS, BACKTRACE_NO_TID, 2));
|
||||
ASSERT_TRUE(backtrace_create_context(&ign2, BACKTRACE_CURRENT_PROCESS,
|
||||
BACKTRACE_CURRENT_THREAD, 2));
|
||||
ASSERT_TRUE(ign2.backtrace != NULL);
|
||||
|
||||
VerifyIgnoreFrames(all.backtrace, ign1.backtrace, ign2.backtrace,
|
||||
|
@ -296,7 +301,7 @@ TEST(libbacktrace, ptrace_trace) {
|
|||
ASSERT_NE(test_level_one(1, 2, 3, 4, NULL, NULL), 0);
|
||||
exit(1);
|
||||
}
|
||||
VerifyProcTest(pid, BACKTRACE_NO_TID, ReadyLevelBacktrace, VerifyLevelDump);
|
||||
VerifyProcTest(pid, BACKTRACE_CURRENT_THREAD, ReadyLevelBacktrace, VerifyLevelDump);
|
||||
|
||||
kill(pid, SIGKILL);
|
||||
int status;
|
||||
|
@ -309,7 +314,7 @@ TEST(libbacktrace, ptrace_max_trace) {
|
|||
ASSERT_NE(test_recursive_call(MAX_BACKTRACE_FRAMES+10, NULL, NULL), 0);
|
||||
exit(1);
|
||||
}
|
||||
VerifyProcTest(pid, BACKTRACE_NO_TID, ReadyMaxBacktrace, VerifyMaxDump);
|
||||
VerifyProcTest(pid, BACKTRACE_CURRENT_THREAD, ReadyMaxBacktrace, VerifyMaxDump);
|
||||
|
||||
kill(pid, SIGKILL);
|
||||
int status;
|
||||
|
@ -320,11 +325,11 @@ void VerifyProcessIgnoreFrames(const backtrace_t* bt_all) {
|
|||
pid_t pid = bt_all->pid;
|
||||
|
||||
backtrace_context_t ign1;
|
||||
ASSERT_TRUE(backtrace_create_context(&ign1, pid, BACKTRACE_NO_TID, 1));
|
||||
ASSERT_TRUE(backtrace_create_context(&ign1, pid, BACKTRACE_CURRENT_THREAD, 1));
|
||||
ASSERT_TRUE(ign1.backtrace != NULL);
|
||||
|
||||
backtrace_context_t ign2;
|
||||
ASSERT_TRUE(backtrace_create_context(&ign2, pid, BACKTRACE_NO_TID, 2));
|
||||
ASSERT_TRUE(backtrace_create_context(&ign2, pid, BACKTRACE_CURRENT_THREAD, 2));
|
||||
ASSERT_TRUE(ign2.backtrace != NULL);
|
||||
|
||||
VerifyIgnoreFrames(bt_all, ign1.backtrace, ign2.backtrace, NULL);
|
||||
|
@ -339,7 +344,7 @@ TEST(libbacktrace, ptrace_ignore_frames) {
|
|||
ASSERT_NE(test_level_one(1, 2, 3, 4, NULL, NULL), 0);
|
||||
exit(1);
|
||||
}
|
||||
VerifyProcTest(pid, BACKTRACE_NO_TID, ReadyLevelBacktrace, VerifyProcessIgnoreFrames);
|
||||
VerifyProcTest(pid, BACKTRACE_CURRENT_THREAD, ReadyLevelBacktrace, VerifyProcessIgnoreFrames);
|
||||
|
||||
kill(pid, SIGKILL);
|
||||
int status;
|
||||
|
@ -614,10 +619,12 @@ TEST(libbacktrace, thread_multiple_dump) {
|
|||
TEST(libbacktrace, format_test) {
|
||||
backtrace_context_t context;
|
||||
|
||||
ASSERT_TRUE(backtrace_create_context(&context, BACKTRACE_CURRENT_PROCESS, BACKTRACE_NO_TID, 0));
|
||||
ASSERT_TRUE(backtrace_create_context(&context, BACKTRACE_CURRENT_PROCESS,
|
||||
BACKTRACE_CURRENT_THREAD, 0));
|
||||
ASSERT_TRUE(context.backtrace != NULL);
|
||||
|
||||
backtrace_frame_data_t* frame = const_cast<backtrace_frame_data_t*>(&context.backtrace->frames[1]);
|
||||
backtrace_frame_data_t* frame =
|
||||
const_cast<backtrace_frame_data_t*>(&context.backtrace->frames[1]);
|
||||
backtrace_frame_data_t save_frame = *frame;
|
||||
|
||||
memset(frame, 0, sizeof(backtrace_frame_data_t));
|
||||
|
|
Loading…
Reference in a new issue