2

根据此处的文档,gdb 指出:

功能:gdb.set_convenience_variable (name, value)
[...] 如果 value 为 None,则移除便利变量。

但是当我执行

gdb.set_convenience_variable('foo', 1)
gdb.set_convenience_variable('foo', None)

ashow conv在 gdb shell 中显示$foo = void. 预期的行为是 gdb 将完全删除该变量。在自定义命令中,我使用 uuids 作为 gdb 端的变量名来保存中间表达式结果(以避免名称冲突),因此保留这些变量并不理想。我在 gdb错误跟踪器中没有看到任何关于此的内容,并且通过代码它似乎没有实际删除便利变量的方法 - 只需将其设置为 void (此处)。

4

1 回答 1

2

我同意。创建内部变量的函数说明了为什么没有立即实现:这个函数只是预先添加到现有的内部变量列表中。从这样的单链表中删除一个元素并不是一件容易的事,因为你必须拼接相应的元素,任何曾经实现过单链表的人都可以证明,但这也不难……让我们看看维护者怎么说。如果您发现此类问题,请考虑自己提交此类错误报告!

于 2019-12-16T15:45:30.377 回答