You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
568 B
42 lines
568 B
#include <libunwind.h> |
|
#include <stdlib.h> |
|
|
|
void backtrace(int lower_bound) { |
|
unw_context_t context; |
|
unw_getcontext(&context); |
|
|
|
unw_cursor_t cursor; |
|
unw_init_local(&cursor, &context); |
|
|
|
int n = 0; |
|
do { |
|
++n; |
|
if (n > 100) { |
|
abort(); |
|
} |
|
} while (unw_step(&cursor) > 0); |
|
|
|
if (n < lower_bound) { |
|
abort(); |
|
} |
|
} |
|
|
|
void test1(int i) { |
|
backtrace(i); |
|
} |
|
|
|
void test2(int i, int j) { |
|
backtrace(i); |
|
test1(j); |
|
} |
|
|
|
void test3(int i, int j, int k) { |
|
backtrace(i); |
|
test2(j, k); |
|
} |
|
|
|
int main() { |
|
test1(1); |
|
test2(1, 2); |
|
test3(1, 2, 3); |
|
}
|
|
|