Сценарии в GDB - PullRequest
       1

Сценарии в GDB

4 голосов
/ 08 апреля 2011

Скажем, например, у меня есть исходный файл C с методом, подобным foo(a), где a - символ.

Я хочу напечатать вывод foo для каждого символа, есть ли более простой способ, чем проходить систематически и вводить p foo('a'), затем p foo('b')?

В идеале я бы очень хотел написать сценарий, чтобы он был немного быстрее.

Ответы [ 3 ]

7 голосов
/ 08 апреля 2011

Мне удалось выяснить это, мой код был в основном:

define foo_test
    set $a = 97
    set $b = 123

    while $a < $b
        p (char)foo($a)
        set $a = $a + 1
    end
end
2 голосов
/ 08 апреля 2011
perl -e 'foreach $i ("a" .. "z") { print "print foo('\''$i'\'')\n"; }' > /tmp/t.$$ &&
gdb --batch -x /tmp/t.$$ ./a.out ; rm -f /tmp/t.$$

Вам также следует изучить скрипты GDB Python .

0 голосов
/ 08 апреля 2011

Похоже, первое, что вы должны добавить, это несколько «списков команд точек останова», они позволят вам запустить некоторые команды GDB после достижения точки останова.

Так что, если вы добавляете так, ваша печать запускается, когда кто-то вызывает функции foo, Вы должны быть близки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...