Re: Unexpected behavior of `gdb.PARAM_INTEGER` and `gdb.PARAM_UINTEGER` parameter
Andrew Burgess via Gdb <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
利承昕 via Gdb <[email protected]> writes: > Hi, > > I've noticed that if we use Python API to create a `gdb.PARAM_INTEGER` or > `gdb.PARAM_UINTEGER` parameter this way: > > ``` > $ cat test.py > > import gdb > class ExampleParam(gdb.Parameter): > def __init__ (self, name): > super(ExampleParam, self).__init__ (name, gdb.COMMAND_DATA, > gdb.PARAM_INTEGER) > self.value = 0 > self.saved_value = True > > def get_set_string (self): > print(self.value) > return "Set to %r" % self.value > > ExampleParam("example”) > ``` > > According to the docs here: > https://sourceware.org/gdb/onlinedocs/gdb/Parameters-In-Python.html, `0` > should be interpreted to mean "unlimited", so I expected that when a > `gdb.PARAM_INTEGER` or `gdb.PARAM_UINTEGER` parameter’s value is > "unlimited" in GDB, then the value in Python will be interpreted to 0. You are correct that this area is not well documented. These parameter types have always returned None for unlimited, so I don't think we'd want to consider changing the behaviour at this point. There is already a related patch on the mailing list that will improve the documentation of these parameter types: https://sourceware.org/pipermail/gdb-patches/2022-October/193253.html Thanks, Andrew > > But somehow, GDB interprets `None` to mean "unlimited" for that parameter > we created: > > ``` > $ gdb -q -nx -ex 'source test.py’ > (gdb) show example > The current value of 'example' is "unlimited”. > (gdb) pi gdb.parameter("example") is None > True > (gdb) set example unlimited > None > Set to None > (gdb) pi gdb.parameter("example") is None > True > (gdb) show example > The current value of 'example' is "unlimited". > (gdb) set example 0 > None > Set to None > (gdb) pi gdb.parameter("example") is None > True > (gdb) show example > The current value of 'example' is "unlimited". > ``` > > You can notice that GDB set the value of the `example` to `None` instead of > `0`. > > Is this the expected result? > > My GDB version is GNU gdb (Ubuntu 12.0.90-0ubuntu1) 12.0.90, and I'm on > Ubuntu 22.04.1 LTS. > > Best Regards, > Alan Li