И, как указывает @tlwhitec: Вы также можете использовать встроенную функцию $_streq(str1, str2)
:
(gdb) p $_streq($x, "hello")
Эта функция не требует настройки GDB с поддержкой Python, что означает, что онивсегда доступен.
Более удобные функции можно найти в https://sourceware.org/gdb/onlinedocs/gdb/Convenience-Funs.html. Или используйте
(gdb) help function
, чтобы распечатать список всех вспомогательных функций.
Для старых GDB, в которых отсутствует встроенная функция $_streq
, вы можете определить собственное сравнение
(gdb) p strcmp($x, "hello") == 0
$1 = 1
Если вам не повезло, что программа не запущена (выполняя основной файл или что-то в этом роде), вы можете сделать что-то для следующего: если ваш gdb достаточно новый, чтобы иметь python:
(gdb) py print cmp(gdb.execute("output $x", to_string=True).strip('"'), "hello") == 0
True
или:
(gdb) define strcmp
>py print cmp(gdb.execute("output $arg0", to_string=True).strip('"'), $arg1)
>end
(gdb) strcmp $x "hello"
0