This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
[Bug python/17152] New: when python pretty printer is used watch command prints new value in the old value filed
- From: "skwllsp at gmail dot com" <sourceware-bugzilla at sourceware dot org>
- To: gdb-prs at sourceware dot org
- Date: Mon, 14 Jul 2014 10:29:52 +0000
- Subject: [Bug python/17152] New: when python pretty printer is used watch command prints new value in the old value filed
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=17152
Bug ID: 17152
Summary: when python pretty printer is used watch command
prints new value in the old value filed
Product: gdb
Version: 7.7
Status: NEW
Severity: normal
Priority: P2
Component: python
Assignee: unassigned at sourceware dot org
Reporter: skwllsp at gmail dot com
If no python pretty printer is used then my type unsigned char is correctly
printed:
Hardware watchpoint 2: value
Old value = "\000\000\000"
New value = "He\000"
0x0000003a1d889974 in memcpy () from /lib64/libc.so.6
When I use my own python pretty printer watch command prints new value in the
old value filed:
Hardware watchpoint 2: value
Old value = (72,101,0,0,)
New value = (72,101,0,0,)
0x0000003a1d889974 in memcpy () from /lib64/libc.so.6
Here is a test C++ program:
$ cat change_uchar_array4.cpp
#include <string.h>
unsigned char value[4];
int main()
{
memcpy(value, "He",2);
return 0;
}
Here is my python pretty printer:
$ cat my_uchar4_printer.py
class CustomPrinter(object):
def __init__(self, val):
self.val = val
def to_string(self):
res = '('
for m in xrange(4):
res += str(int(self.val[m])) + ","
res += ')'
return res
def display_hint(self):
return 'array'
def lookup_type (val):
if str(val.type) == 'unsigned char [4]':
return CustomPrinter(val)
return None
gdb.pretty_printers.append (lookup_type)
$ gdb --version
GNU gdb (GDB) 7.7.1
Here the test itself:
$ gdb -q -x my_uchar4_printer.py -ex "set pagination off" -ex "start" -ex
"watch value" -ex "c" ./change_uchar_array4
Reading symbols from ./change_uchar_array4...done.
Temporary breakpoint 1 at 0x4005a8: file change_uchar_array4.cpp, line 7.
Starting program: /home/change_uchar_array4
Temporary breakpoint 1, main () at change_uchar_array4.cpp:7
7 memcpy(value, "He",2);
Hardware watchpoint 2: value
Continuing.
Hardware watchpoint 2: value
Old value = (72,101,0,0,)
New value = (72,101,0,0,)
0x0000003a1d889974 in memcpy () from /lib64/libc.so.6
--
You are receiving this mail because:
You are on the CC list for the bug.