From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13694 invoked by alias); 14 Jul 2014 10:29:54 -0000 Mailing-List: contact gdb-prs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-prs-owner@sourceware.org Received: (qmail 13672 invoked by uid 48); 14 Jul 2014 10:29:54 -0000 From: "skwllsp at gmail dot com" To: gdb-prs@sourceware.org Subject: [Bug python/17152] New: when python pretty printer is used watch command prints new value in the old value filed Date: Mon, 14 Jul 2014 10:29:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gdb X-Bugzilla-Component: python X-Bugzilla-Version: 7.7 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: skwllsp at gmail dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-q3/txt/msg00069.txt.bz2 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 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.