根据文档here,gdb指出:
功能:gdb.set_convenience_variable(名称,值)
[...]如果值为None,则便利变量将被删除。
但是当我执行
gdb.set_convenience_variable('foo', 1)
gdb.set_convenience_variable('foo', None)
gdb shell中的show conv
显示$foo = void
。预期的行为是gdb将完全删除该变量。在自定义命令中,我在gdb端使用uuids作为变量名称来保存中间表达式的结果(以避免名称冲突),因此让这些变量粘住并不理想。我没有在gdb bug tracker中看到任何有关此内容的信息,并且在代码中似乎没有出现,实际上有一种方法可以删除便利变量-只需将其设置为void({{ 3}})。
答案 0 :(得分:1)
我同意。 function to create internal variables显示了为什么没有立即实施此功能:此函数只是添加到现有内部变量列表的前面。从这样一个单链列表中删除一个元素并不容易,因为您必须拼接相应的元素,因为曾经实施过一个单链列表的任何人都可以作证,但这也不难...让我们来看看what the maintainers say 。如果发现此类问题,请考虑自己提交此类错误报告!