Wie kann man emacs gdb anweisen, die aktuelle Codezeile in der Mitte des Puffers anzuzeigen?

1851
dehmann

Die Verwendung des Debuggers in emacs ist schön: Sie können den Code mit dem nextBefehl schrittweise durchgehen, und emacs zeigt immer die aktuell ausgeführte Codezeile an:

 int x; int y; =>int z; 

Wenn Ihre Datei jedoch lang ist, bewegt sich dieser Zeiger leider =>nach unten und zeigt immer die aktuelle Zeile am unteren Rand des Puffers.

Es wäre schöner, wenn der Zeiger =>immer in der Mitte des Puffers bleiben würde (vertikal zentriert), so dass ich sehen kann, was direkt nach der aktuellen Zeile kommt, bevor ich noch einmal sage next, wie hier:

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

Ist das möglich? Kann ich das irgendwo einstellen?

3

1 Antwort auf die Frage

4
Trey Jackson

Es gibt keinen eingebauten Mechanismus, um die Linie zentriert zu halten, doch dieser Rat macht mir den Trick:

(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))))) 
Funktioniert nicht für mich. Wenn ich in gdb 'next' sage, gibt emacs einen `Fehler im Prozessfilter: Der Wert des Symbols als Variable ist void: gud-overlay-arrow-position ' dehmann vor 14 Jahren 0
fyi, arbeitet für mich in GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK + Version 2.18.9). Vielen Dank! simpleuser vor 9 Jahren 1