mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-03-13 13:49:00 +08:00
Ignore static members in NoOpStructPrinter
Hannes' patch to show local variables in the TUI pointed out that NoOpStructPrinter should ignore static members. This patch implements this.
This commit is contained in:
parent
cfd00e8050
commit
4a1b9a4bad
@ -350,7 +350,7 @@ class NoOpStructPrinter(gdb.ValuePrinter):
|
||||
|
||||
def children(self):
|
||||
for field in self.__ty.fields():
|
||||
if field.name is not None:
|
||||
if hasattr(field, "bitpos") and field.name is not None:
|
||||
yield (field.name, self.__value[field])
|
||||
|
||||
|
||||
|
@ -15,9 +15,21 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
struct some_struct
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
|
||||
static int z;
|
||||
};
|
||||
|
||||
int some_struct::z = 37;
|
||||
|
||||
void
|
||||
func ()
|
||||
{
|
||||
some_struct aggregate { 91, 87 };
|
||||
|
||||
int value = 23;
|
||||
|
||||
int *ptr = &value;
|
||||
|
@ -55,7 +55,7 @@ gdb_assert {[llength $scopes] == 2} "two scopes"
|
||||
lassign $scopes scope reg_scope
|
||||
gdb_assert {[dict get $scope name] == "Locals"} "scope is locals"
|
||||
|
||||
gdb_assert {[dict get $scope namedVariables] == 3} "three vars in scope"
|
||||
gdb_assert {[dict get $scope namedVariables] == 4} "three vars in scope"
|
||||
|
||||
set num [dict get $scope variablesReference]
|
||||
set refs [lindex [dap_check_request_and_response "fetch variables" \
|
||||
@ -97,6 +97,13 @@ foreach var [dict get $refs body variables] {
|
||||
"$name has exactly one child"
|
||||
fetch_pointer $name $var
|
||||
}
|
||||
"aggregate" {
|
||||
gdb_assert {[dict get $var variablesReference] != 0} \
|
||||
"$name has children"
|
||||
# This should omit the static field.
|
||||
gdb_assert {[dict get $var namedVariables] == 2} \
|
||||
"$name has exactly 2 children"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user