From 244099689cbda165b0eaded0c7aeed05e26feec6 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Sun, 24 Jun 2012 13:03:09 +0200 Subject: [PATCH] winedbg: In 'info locals' command, show the full register/stack layout for parameters & locals. --- programs/winedbg/symbol.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/programs/winedbg/symbol.c b/programs/winedbg/symbol.c index 8d7af5d2662..99b382d4f68 100644 --- a/programs/winedbg/symbol.c +++ b/programs/winedbg/symbol.c @@ -81,11 +81,20 @@ static BOOL fill_sym_lvalue(const SYMBOL_INFO* sym, ULONG_PTR base, else if (sym->Flags & SYMFLAG_REGREL) { DWORD_PTR* pval; + size_t l; + *buffer++ = '['; sz--; if (!memory_get_register(sym->Register, &pval, buffer, sz)) return FALSE; + l = strlen(buffer); + sz -= l; + buffer += l; lvalue->cookie = DLV_TARGET; lvalue->addr.Offset = (ULONG64)*pval + sym->Address; + if ((LONG_PTR)sym->Address >= 0) + snprintf(buffer, sz, "+%ld]", (ULONG_PTR)sym->Address); + else + snprintf(buffer, sz, "-%ld]", -(LONG_PTR)sym->Address); } else if (sym->Flags & SYMFLAG_VALUEPRESENT) { @@ -711,7 +720,7 @@ void symbol_print_local(const SYMBOL_INFO* sym, DWORD_PTR base, BOOL detailed) { print_value(&lvalue, 0, 1); if (detailed) - dbg_printf(" (%s%s)", + dbg_printf(" (%s %s)", (sym->Flags & SYMFLAG_PARAMETER) ? "parameter" : "local", buffer); }