public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "skwllsp at gmail dot com" <sourceware-bugzilla@sourceware.org>
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	[thread overview]
Message-ID: <bug-17152-4717@http.sourceware.org/bugzilla/> (raw)

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.


             reply	other threads:[~2014-07-14 10:29 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-14 10:29 skwllsp at gmail dot com [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-17152-4717@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).