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

관련 정보