Wie kann man emacs gdb anweisen, die aktuelle Codezeile in der Puffermitte anzuzeigen?

3

Die Verwendung des Debuggers in Emacs ist nett: Sie können den Code mit der next Befehl, und Emacs zeigt immer die Codezeile, die gerade ausgeführt wird, wie folgt:

  int x;
  int y;
=>int z;

Aber leider, wenn Ihre Datei lang ist, dieser Zeiger => wird sich irgendwann nach unten bewegen und immer die aktuelle Zeile am unteren Rand des Puffers anzeigen.

Es wäre schöner, wenn der Zeiger => blieb immer in der Mitte des Puffers (vertikal zentriert), damit ich sehen kann, was direkt nach der aktuellen Zeile kommt, bevor ich sage next wieder wie hier:

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

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

dehmann
quelle

Antworten:

4

Es gibt keinen eingebauten Mechanismus, um die Linie in der Mitte zu halten, aber dieser Ratschlag ist der Trick für mich:

(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)))))
Trey Jackson
quelle
Funktioniert bei mir nicht. Wenn ich in gdb 'next' sage, gibt emacs eine error in process filter: Symbol's value as variable is void: gud-overlay-arrow-position
dehmann
1
fyi, funktioniert für mich in GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK + Version 2.18.9). Vielen Dank!
simpleuser