winedbg: Print parameter values in backtraces in hex.
Dmitry Timoshkov
dmitry at codeweavers.com
Tue Feb 16 02:36:21 CST 2010
This patch makes it much easier to match values in a relay log with
values printed in a backtrace, as well as helping to match values of
many symbolic constants like win32 window styles, messages and many
more since they are defined in hex in header files.
---
programs/winedbg/memory.c | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/programs/winedbg/memory.c b/programs/winedbg/memory.c
index c8ceeb1..9554ea4 100644
--- a/programs/winedbg/memory.c
+++ b/programs/winedbg/memory.c
@@ -338,6 +338,20 @@ static void dbg_print_longlong(LONGLONG sv, BOOL is_signed)
dbg_printf("%s", ptr);
}
+static void dbg_print_hex(ULONGLONG sv)
+{
+ if (!sv)
+ {
+ dbg_printf("0");
+ return;
+ }
+
+ if (sv >> 32)
+ dbg_printf("0x%lx%08lx", (unsigned long)(sv >> 32), (unsigned long)sv);
+ else
+ dbg_printf("0x%04lx", (unsigned long)sv);
+}
+
static void print_typed_basic(const struct dbg_lvalue* lvalue)
{
LONGLONG val_int;
@@ -367,12 +381,12 @@ static void print_typed_basic(const struct dbg_lvalue* lvalue)
case btLong:
if (!be_cpu->fetch_integer(lvalue, size, TRUE, &val_int)) return;
if (size == 1) goto print_char;
- dbg_print_longlong(val_int, TRUE);
+ dbg_print_hex(val_int);
break;
case btUInt:
case btULong:
if (!be_cpu->fetch_integer(lvalue, size, FALSE, &val_int)) return;
- dbg_print_longlong(val_int, FALSE);
+ dbg_print_hex(val_int);
break;
case btFloat:
if (!be_cpu->fetch_float(lvalue, size, &val_real)) return;
--
1.7.0
More information about the wine-patches
mailing list