Игнорирование ошибок «значение было оптимизировано» в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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