gdb-customizeコマンド、変数が設定されているかどうかをテストする方法は?

gdb-customizeコマンド、変数が設定されているかどうかをテストする方法は?

デバッグにはgdbを使用しており、いくつかの補助コマンドを定義する必要があります。基本的に、私はカスタムコマンドが与えられた引数の数に応じて他のタスクを実行したいと思います。

$arg*だからそれが与えられるかどうかをテストしたいと思います。以下のコードを参照してください。

define pgdir

    set $pgdir = $arg0

    if ($arg1) {
        // show the corresponding PDE
    } else {
        // show the whole page directory
    }

end

変数が無効かどうかをテストできますか?

答え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値を持つ変数と等しいかどうかをテストします。

define func

    if ($var_to_test == $var_that_no_one_is_like_to_use_so_that_it_is_void)
        // do something

end

関連情報