This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
How to implement a new Python command that takes values from tty?
- From: Yifei Zheng <zheng432 at purdue dot edu>
- To: gdb at sourceware dot org
- Date: Tue, 3 Oct 2017 18:41:56 -0400
- Subject: How to implement a new Python command that takes values from tty?
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=none (sender IP is ) smtp.mailfrom=zheng432 at purdue dot edu;
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
Hi there,
I have written a few gdb pretty-printers using Python but this time I'm
trying to write a new command in Python. I want it to take arguments
from gdb and somewhat works like gdb's print. (It's a special printer
for some kind of std::vector).
I know I should start by inheriting `gdb.Command` and call `__init__`,
but I'm definitely stuck on `invoke`. The arguments passed in are in
string, which, I would like to convert them to gdb.Value, by looking
them up somehow. I have a partially working version that uses
"gdb.lookup_symbol", but it does not work for expressions (of course,
expected).
For example, say the command was called `ppack` which accepts an
argument just as native `print` do. Desired syntax would be like "pprint
some_var" or "pprint some_other_var.field1" or "pprint *some_ptr".
How can I let gdb evaluates the expression for me so that I don't have
to parse it, and then give me the value instead of the name?
Thanks,
Yifei