summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/backtrace/backtrace.h8
-rw-r--r--libbacktrace/Backtrace.cpp6
2 files changed, 11 insertions, 3 deletions
diff --git a/include/backtrace/backtrace.h b/include/backtrace/backtrace.h
index b35a6d5..a833982 100644
--- a/include/backtrace/backtrace.h
+++ b/include/backtrace/backtrace.h
@@ -23,6 +23,14 @@
__BEGIN_DECLS
+// When the pid to be traced is set to this value, then trace the current
+// process. If the tid value is not BACKTRACE_NO_TID, then the specified
+// 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
+
#define MAX_BACKTRACE_FRAMES 64
typedef struct backtrace_map_info {
diff --git a/libbacktrace/Backtrace.cpp b/libbacktrace/Backtrace.cpp
index 17d9e1d..b22d301 100644
--- a/libbacktrace/Backtrace.cpp
+++ b/libbacktrace/Backtrace.cpp
@@ -213,13 +213,13 @@ bool BacktracePtrace::ReadWord(uintptr_t ptr, uint32_t* out_value) {
}
Backtrace* Backtrace::Create(pid_t pid, pid_t tid) {
- if (pid < 0 || pid == getpid()) {
- if (tid < 0 || tid == gettid()) {
+ if (pid == BACKTRACE_CURRENT_PROCESS || pid == getpid()) {
+ if (tid == BACKTRACE_NO_TID || tid == gettid()) {
return CreateCurrentObj();
} else {
return CreateThreadObj(tid);
}
- } else if (tid < 0) {
+ } else if (tid == BACKTRACE_NO_TID) {
return CreatePtraceObj(pid, pid);
} else {
return CreatePtraceObj(pid, tid);