Вы можете определить команду в GDB делать то, что вы хотите, как показано:
(gdb) define CheckDefined
Type commands for definition of "CheckDefined".
End with a line saying just "end".
>set $CheckDefined_DefinedOr1 = $arg0
>init-if-undefined $CheckDefined_DefinedOr1 = 1
>set $CheckDefined_DefinedOr2 = $arg0
>init-if-undefined $CheckDefined_DefinedOr2 = 2
>set $arg1 = ($CheckDefined_DefinedOr1 == $CheckDefined_DefinedOr2)
>end
Теперь, когда вы определили CheckDefined, вы можете использовать ее, как показано, чтобы проверить, является ли данная вспомогательная переменная, вв этом случае $ fluffy, определяется, сохраняя результат проверки в $ fluffyIsDefined:
(gdb) CheckDefined $fluffy $fluffyIsDefined
(gdb) print $fluffyIsDefined
$17 = 0
Если вы теперь определите ранее неопределенную переменную, $ fluffy, CheckDefined даст другой результат:
(gdb) set $fluffy = 92
(gdb) CheckDefined $fluffy $fluffyIsDefined
(gdb) print $fluffyIsDefined
$18 = 1
Преимущество использования этой функции заключается в том, что вам не нужно забивать переменную, которую вы хотите проверить.Итак, чтобы переписать вашу оригинальную конструкцию:
(gdb) CheckDefined $_exitcode $exitCodeIsDefined
(gdb) if (! $exitCodeIsDefined)
>quit
>end