mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-22 07:37:38 +01:00
Enhance debug messages
This commit is contained in:
parent
453253dd0e
commit
f6cca76ee3
2 changed files with 20 additions and 5 deletions
|
@ -97,6 +97,12 @@ int set_dwarf_loc_ifdef(
|
||||||
|
|
||||||
int eh_elf_step_cursor(struct cursor *cursor) {
|
int eh_elf_step_cursor(struct cursor *cursor) {
|
||||||
uintptr_t ip = cursor->dwarf.ip;
|
uintptr_t ip = cursor->dwarf.ip;
|
||||||
|
{
|
||||||
|
uintptr_t dbp;
|
||||||
|
dwarf_get(&cursor->dwarf, cursor->dwarf.loc[UNW_TDEP_BP], &dbp);
|
||||||
|
Debug (4, "AT ENTER bp=%016lx%s sp=%016lx ip=%016lx\n", dbp,
|
||||||
|
DWARF_IS_NULL_LOC(cursor->dwarf.loc[UNW_TDEP_BP])?" [NULL]":"",
|
||||||
|
cursor->dwarf.cfa, cursor->dwarf.ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve memory map entry
|
// Retrieve memory map entry
|
||||||
|
@ -134,10 +140,12 @@ int eh_elf_step_cursor(struct cursor *cursor) {
|
||||||
_fetch_state.last_rc = 0;
|
_fetch_state.last_rc = 0;
|
||||||
_fetch_state.cur_rsp = cursor->dwarf.cfa;
|
_fetch_state.cur_rsp = cursor->dwarf.cfa;
|
||||||
|
|
||||||
Debug(4, "Unwinding in mmap entry %s at position 0x%lx (sp=%016lx)\n",
|
Debug(4, "Unwinding in mmap entry %s at position 0x%lx (sp=%016lx, bp=%016lx)\n",
|
||||||
mmap_entry->object_name,
|
mmap_entry->object_name,
|
||||||
ip - mmap_entry->offset,
|
ip - mmap_entry->offset,
|
||||||
eh_elf_context.rsp);
|
eh_elf_context.rsp,
|
||||||
|
eh_elf_context.rbp
|
||||||
|
);
|
||||||
|
|
||||||
eh_elf_context.flags = 0;
|
eh_elf_context.flags = 0;
|
||||||
// Call fde_func
|
// Call fde_func
|
||||||
|
|
|
@ -80,6 +80,13 @@ unw_step (unw_cursor_t *cursor)
|
||||||
_step_id_data.orig_cfa = c->dwarf.cfa;
|
_step_id_data.orig_cfa = c->dwarf.cfa;
|
||||||
|
|
||||||
UnwDebug(3, "unw_step called\n");
|
UnwDebug(3, "unw_step called\n");
|
||||||
|
{
|
||||||
|
uintptr_t dbp;
|
||||||
|
dwarf_get(&c->dwarf, c->dwarf.loc[RBP], &dbp);
|
||||||
|
UnwDebug (4, "unw_step context: bp=%016lx%s sp=%016lx ip=%016lx\n", dbp,
|
||||||
|
DWARF_IS_NULL_LOC(c->dwarf.loc[RBP])? " [NULL]": "",
|
||||||
|
c->dwarf.cfa, c->dwarf.ip);
|
||||||
|
}
|
||||||
struct timespec _timer_start = chrono_start();
|
struct timespec _timer_start = chrono_start();
|
||||||
int ret, i;
|
int ret, i;
|
||||||
|
|
||||||
|
@ -114,11 +121,10 @@ unw_step (unw_cursor_t *cursor)
|
||||||
|
|
||||||
if (ret < 0 && ret != -UNW_ENOINFO)
|
if (ret < 0 && ret != -UNW_ENOINFO)
|
||||||
{
|
{
|
||||||
UnwDebug (3, "dwarf_step also failed?\n", ret);
|
UnwDebug (3, "dwarf_step also failed [%d]?\n", ret);
|
||||||
UnwDebug (2, "returning %d\n", ret);
|
UnwDebug (2, "returning %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
UnwDebug(4, "UNW_ENOINFO=%d\n", UNW_ENOINFO);
|
|
||||||
UnwDebug(3, "fallback continuing\n");
|
UnwDebug(3, "fallback continuing\n");
|
||||||
|
|
||||||
if (likely (ret >= 0))
|
if (likely (ret >= 0))
|
||||||
|
@ -135,6 +141,7 @@ unw_step (unw_cursor_t *cursor)
|
||||||
uintptr_t dbp;
|
uintptr_t dbp;
|
||||||
dwarf_get(&c->dwarf, c->dwarf.loc[RBP], &dbp);
|
dwarf_get(&c->dwarf, c->dwarf.loc[RBP], &dbp);
|
||||||
UnwDebug (3, " DWARF: bp=%016lx sp=%016lx ip=%016lx\n", dbp, c->dwarf.cfa, c->dwarf.ip);
|
UnwDebug (3, " DWARF: bp=%016lx sp=%016lx ip=%016lx\n", dbp, c->dwarf.cfa, c->dwarf.ip);
|
||||||
|
UnwDebug(3, "fallback with actual dwarf\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -157,7 +164,7 @@ unw_step (unw_cursor_t *cursor)
|
||||||
Validate all addresses before dereferencing. */
|
Validate all addresses before dereferencing. */
|
||||||
c->validate = 1;
|
c->validate = 1;
|
||||||
|
|
||||||
UnwDebug (13, "dwarf_step() failed (ret=%d), trying frame-chain\n", ret);
|
UnwDebug (4, "dwarf_step() failed (ret=%d), trying frame-chain\n", ret);
|
||||||
|
|
||||||
if (unw_is_signal_frame (cursor))
|
if (unw_is_signal_frame (cursor))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue