Unexpected behavior of `gdb.PARAM_INTEGER` and `gdb.PARAM_UINTEGER` parameter

利承昕 via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CAD8EyY2ZPtpid-M3LdgrJ03BR7vHst544EOxLMihkYc2oAdAqw@mail.gmail.com>
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.

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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.