Я использую GDB 7.6 на удаленном сервере.
Когда я запускаю gdb
, все в порядке, пока не запущена отлаживаемая программа. Я могу использовать стрелки вверх и вниз для навигации по истории GDB и т. д. Ошибок отображения, о которых можно сообщить, нет.
Когда я создаю точку останова где-то в своей программе, а затем run
программу для отладки, на дисплее появляется много артефактов (символы отображаются не на том месте), пока я не запущу refresh
. С этого момента работают , next
, stepi
, nexti
стрелки вверх и вниз и т. д.нодисплей продолжает рисовать символы в неправильных местах. Если я не запускаю refresh
на каждом шаге, дисплей не такой, каким должен быть. Более того, когда я нажимаю клавишу со стрелкой вверх или вниз, отображаются необработанные коды символов ^[[A
или ^[[B
, не позволяя узнать, какая команда истории будет выполнена.
Я пробовал определять крючки, например
define hook-nexti
refresh
end
Это фактически обновляет экран, но иногда все равно могут возникать нежелательные артефакты (особенно на выделенной строке исполняемого кода) и это не является приемлемым решением, поскольку мне не нужны хуки на моей локальной машине (GDB 7.11, zsh 5.0.2).
У меня на машине также есть GDB 7.7, с помощью которого можно воспроизвести проблему. Это ошибка, которая была исправлена между GDB 7.7 и GDB 7.11? Если да, то я просто скомпилирую binutils-gdb
из исходников, так как у меня нет доступа root на удаленном сервере.