From: Andrew Burgess <aburgess@redhat.com>
To: 利承昕 <alan.li.ncu@g.ncu.edu.tw>, gdb@sourceware.org
Subject: Re: Unexpected behavior of `gdb.PARAM_INTEGER` and `gdb.PARAM_UINTEGER` parameter
Date: Mon, 31 Oct 2022 10:12:56 +0000 [thread overview]
Message-ID: <87a65ccndj.fsf@redhat.com> (raw)
In-Reply-To: <CAD8EyY2ZPtpid-M3LdgrJ03BR7vHst544EOxLMihkYc2oAdAqw@mail.gmail.com>
利承昕 via Gdb <gdb@sourceware.org> 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
prev parent reply other threads:[~2022-10-31 10:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-22 8:36 利承昕
2022-10-31 10:12 ` Andrew Burgess [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a65ccndj.fsf@redhat.com \
--to=aburgess@redhat.com \
--cc=alan.li.ncu@g.ncu.edu.tw \
--cc=gdb@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).