Try falling back to backtrace_syminfo
This commit is contained in:
parent
8b101d04e9
commit
4dac00a87f
@ -27,6 +27,14 @@ namespace cpptrace {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void syminfo_callback(void* data, uintptr_t address, const char* symbol, uintptr_t, uintptr_t) {
|
||||
stacktrace_frame& frame = *static_cast<stacktrace_frame*>(data);
|
||||
frame.address = address;
|
||||
frame.line = 0;
|
||||
frame.filename = "";
|
||||
frame.symbol = symbol ? symbol : "";
|
||||
}
|
||||
|
||||
void error_callback(void* data, const char* msg, int errnum) {
|
||||
// nothing at the moment
|
||||
fprintf(stderr, "Backtrace error %s %d %p\n", msg, errnum, data);
|
||||
@ -48,13 +56,21 @@ namespace cpptrace {
|
||||
stacktrace_frame resolve_frame(void* addr) {
|
||||
stacktrace_frame frame;
|
||||
frame.col = -1;
|
||||
backtrace_pcinfo(
|
||||
if(!backtrace_pcinfo(
|
||||
get_backtrace_state(),
|
||||
reinterpret_cast<uintptr_t>(addr),
|
||||
full_callback,
|
||||
error_callback,
|
||||
&frame
|
||||
);
|
||||
)) {
|
||||
backtrace_syminfo(
|
||||
get_backtrace_state(),
|
||||
reinterpret_cast<uintptr_t>(addr),
|
||||
syminfo_callback,
|
||||
error_callback,
|
||||
&frame
|
||||
);
|
||||
}
|
||||
return frame;
|
||||
}
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user