Игнорирование ошибок «значение было оптимизировано» в gdbLinux

Anonymous
Игнорирование ошибок «значение было оптимизировано» в gdb

Сообщение Anonymous »

Я пытаюсь отследить некоторые утечки refcnt в ядре Linux (в частности, в подсистеме ax.25). Я пытаюсь проверить, балансируются ли вызовы netdev_put с вызовами netdev_hold, и для этого я использую такие точки останова:

Код: Выделить всё

break netdev_hold
commands
silent
if $_regex(dev->name, "ax")
printf "netdev_hold %s r:%d u:%d n:%d\n", dev->name, dev->dev_refcnt->refs->counter, dev->refcnt_tracker->untracked->refs->counter, dev->refcnt_tracker->no_tracker->refs->counter
end
continue
end
break netdev_put
commands
silent
if $_regex(dev->name, "ax")
printf "netdev_put %s r:%d u:%d n:%d\n", dev->name, dev->dev_refcnt->refs->counter, dev->refcnt_tracker->untracked->refs->counter, dev->refcnt_tracker->no_tracker->refs->counter
end
continue
end
Цель состоит в том, чтобы печатать информацию только тогда, когда мы имеем дело с интерфейсами ax*. В основном это работает, за исключением случаев, когда это приводит к следующему:

Код: Выделить всё

value has been optimized out
И это приводит к тому, что gdb возвращается к приглашению (gdb). Есть ли способ игнорировать эту ошибку, чтобы GDB в любом случае продолжал работать? Я не был уверен, как написать «если именованная переменная доступна» в GDB.
Думаю, мне должно быть ясно, что я не собираюсь отключать оптимизацию — случаи в который netdev_{hold,put вызывается, когда dev недоступен, меня не интересует.

Подробнее здесь: https://stackoverflow.com/questions/783 ... ors-in-gdb

Вернуться в «Linux»