У меня есть функция следующего вида:
void foo(){
int *a = //...
*a = 1;
//some actions
*a = 2;
//some actions
*a = 3;
//some actions
//etc...
}
Я хочу установить точку наблюдения на a
, выполнить следующую инструкцию с помощью si
, распечатать регистры, а затем продолжить до тех пор, пока точка наблюдения a
снова не будет достигнута, и повторить это.
Я написал следующий скрипт:
b foo
watch *a
commands
si
info reg
cont
end
cont
Проблема в том, что он останавливается после нажатия первой точки наблюдения и не печатает регистры и не продолжает выполнение. Как я читаю в документах
Любые другие команды в списке команд после команды, которая возобновляется
исполнение, игнорируются. Это потому, что каждый раз, когда вы возобновите исполнение
(даже с простым следующим или шагом), вы можете столкнуться с другим
точка останова - которая может иметь свой собственный список команд, ведущий к
Неясности в отношении того, какой список выполнять.
все после si
просто игнорируется.
Есть ли способ написать такой скрипт (gdb
или python
)?