| 1 |
chuckv |
1491 |
#include "debug/Backtrace.hpp" |
| 2 |
|
|
#include "config.h" |
| 3 |
chuckv |
1490 |
|
| 4 |
|
|
#ifdef HAVE_BACKTRACE |
| 5 |
|
|
#include <execinfo.h> |
| 6 |
|
|
|
| 7 |
|
|
using namespace std; |
| 8 |
chuckv |
1491 |
using namespace OpenMD; |
| 9 |
chuckv |
1490 |
|
| 10 |
|
|
#define MAX_STACK 256 |
| 11 |
|
|
|
| 12 |
|
|
void Backtrace::getStackTrace(trace_t &trace) { |
| 13 |
|
|
void *stack[MAX_STACK]; |
| 14 |
|
|
char **strings; |
| 15 |
|
|
|
| 16 |
|
|
int n = backtrace(stack, MAX_STACK); |
| 17 |
|
|
strings = backtrace_symbols(stack, n); |
| 18 |
|
|
|
| 19 |
|
|
for (int i = 0; i < n; i++) |
| 20 |
|
|
trace.push_back(strings[i]); |
| 21 |
|
|
} |
| 22 |
|
|
#endif // HAVE_BACKTRACE |