Как сказать emacs gdb показывать текущую строку кода в центре буфера?

1690
dehmann

Использование отладчика в emacs - это хорошо: вы можете пройти по коду с помощью nextкоманды, и emacs всегда покажет строку кода, которая выполняется в данный момент, например:

 int x; int y; =>int z; 

Но, к сожалению, если ваш файл длинный, этот указатель в =>конечном итоге переместится вниз и всегда будет показывать текущую строку внизу буфера.

Было бы лучше, если бы указатель =>всегда оставался в середине буфера (вертикально по центру), чтобы я мог видеть, что происходит сразу после текущей строки, прежде чем я скажу nextснова, как здесь:

 int y; =>int z; std::cout << z; 

Это возможно? Могу ли я установить это где-нибудь?

3

1 ответ на вопрос

4
Trey Jackson

Нет встроенного механизма для центрирования линии, однако этот совет помогает мне:

(defadvice gud-display-line (after gud-display-line-centered activate) "Center the line in the window" (when (and gud-overlay-arrow-position gdb-source-window) (with-selected-window gdb-source-window ; (marker-buffer gud-overlay-arrow-position) (save-restriction (goto-line (ad-get-arg 1)) (recenter))))) 
Не работает для меня Когда я говорю 'next' в gdb, emacs выдает `error in process filter: значение символа в качестве переменной равно void: gud-overlay-arrow-position` dehmann 14 лет назад 0
кстати, у меня работает в GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK + версия 2.18.9). Спасибо! simpleuser 9 лет назад 1

Похожие вопросы