mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +08:00
bb2bd584f3
Only a few types in the Python API currently have __repr__() implementations. This patch adds a few more of them. specifically: it adds __repr__() implementations to gdb.Symbol, gdb.Architecture, gdb.Block, gdb.Breakpoint, gdb.BreakpointLocation, and gdb.Type. This makes it easier to play around the GDB Python API in the Python interpreter session invoked with the 'pi' command in GDB, giving more easily accessible tipe information to users. An example of how this would look like: (gdb) pi >> gdb.lookup_type("char") <gdb.Type code=TYPE_CODE_INT name=char> >> gdb.lookup_global_symbol("main") <gdb.Symbol print_name=main> The gdb.Block.__repr__() method shows the first 5 symbols from the block, and then a message to show how many more were elided (if any).
70 lines
1.6 KiB
C
70 lines
1.6 KiB
C
/* This testcase is part of GDB, the GNU debugger.
|
|
|
|
Copyright 2010-2023 Free Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
int block_func (void)
|
|
{
|
|
int i = 0;
|
|
{
|
|
double i = 1.0;
|
|
double f = 2.0;
|
|
{
|
|
const char *i = "stuff";
|
|
const char *f = "foo";
|
|
const char *b = "bar";
|
|
return 0; /* Block break here. */
|
|
}
|
|
}
|
|
}
|
|
|
|
/* A function with no locals. Used for testing gdb.Block.__repr__(). */
|
|
int no_locals_func (void)
|
|
{
|
|
return block_func ();
|
|
}
|
|
|
|
/* A function with 5 locals. Used for testing gdb.Block.__repr__(). */
|
|
int few_locals_func (void)
|
|
{
|
|
int i = 0;
|
|
int j = 0;
|
|
int k = 0;
|
|
int x = 0;
|
|
int y = 0;
|
|
return block_func ();
|
|
}
|
|
|
|
/* A function with 6 locals. Used for testing gdb.Block.__repr__(). */
|
|
int many_locals_func (void)
|
|
{
|
|
int i = 0;
|
|
int j = 0;
|
|
int k = 0;
|
|
int x = 0;
|
|
int y = 0;
|
|
int z = 0;
|
|
return block_func ();
|
|
}
|
|
|
|
int main (int argc, char *argv[])
|
|
{
|
|
block_func ();
|
|
no_locals_func ();
|
|
few_locals_func ();
|
|
many_locals_func ();
|
|
return 0; /* Break at end. */
|
|
}
|