2011-09-14 3 views

ответ

18
(gdb) p strcmp($x, "hello") == 0 
$1 = 1 

Если вы достаточно неудачны, чтобы не иметь программу, работающую (исполняющий файл дампа или что-то), вы можете сделать что-то к эффекту следующее, если ваш GDB достаточно новый, чтобы питон:

(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 
+0

Это будет работать только при отладке процесса запуска, но не будет, если отладка дампа. – ks1322

+0

(Альтернатива для неисполняемой отладки была, видимо, добавлена ​​в редактировании.) – StellarVortex

+1

С поддержкой python вы также можете использовать внутреннюю '$ _streq (str1, str2)' функцию: '(gdb) p $ _streq ($ x," hello "). Вероятно, это было добавлено позже, чем был опубликован этот ответ. Я вижу это в gdb 7.7. – tlwhitec

Смежные вопросы