我正在使用 gdb 进行调试,需要定义一些辅助命令。基本上我希望我的自定义命令根据给定的参数数量进行不同的操作。
所以我要测试一下是否$arg*
给出,参见下面的代码:
define pgdir
set $pgdir = $arg0
if ($arg1) {
// show the corresponding PDE
} else {
// show the whole page directory
}
end
是否可以测试变量是否为 void?
答案1
您可以使用便利功能 $_isvoid()
。如果变量为空,则返回 1。
(gdb) set $v = 1
(gdb) print $_isvoid($v)
$1 = 0
(gdb) print $_isvoid($v2)
$2 = 1
答案2
gdb
支持$argc
根据手册扩展到 0..10 的范围,所以在你的情况下它可能是
define pgdir
if $argc == 2
...
else
...
end
end
答案3
至于我的问题,有一个$argc
变量可以让我这样做:
define pgdir
set $pgdir = $arg0
if ($argc == 1) {
// show the corresponding PDE
} else {
// show the whole page directory
}
end
至于问题如何测试变量是否为void,我想到了一个棘手且不优雅的方法:测试变量是否等于具有 void 值的变量。
define func
if ($var_to_test == $var_that_no_one_is_like_to_use_so_that_it_is_void)
// do something
end