public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug python/17152] New: when python pretty printer is used watch command prints new value in the old value filed
@ 2014-07-14 10:29 skwllsp at gmail dot com
  2014-07-14 10:32 ` [Bug python/17152] " skwllsp at gmail dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: skwllsp at gmail dot com @ 2014-07-14 10:29 UTC (permalink / raw)
  To: gdb-prs

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.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-08-31 16:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-14 10:29 [Bug python/17152] New: when python pretty printer is used watch command prints new value in the old value filed skwllsp at gmail dot com
2014-07-14 10:32 ` [Bug python/17152] " skwllsp at gmail dot com
2014-07-14 10:33 ` skwllsp at gmail dot com
2014-07-14 10:59 ` skwllsp at gmail dot com
2014-07-14 12:18 ` skwllsp at gmail dot com
2023-08-31 16:20 ` tromey at sourceware dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).