Emacs / GDB: Zeige die Quelle immer in einem bestimmten Fenster mit gdb-many-windows an

8

Ich verwende GDB in Emacs 24 mit gdb-many-windows auf t , normalerweise in einem eigenen Frame. Ich habe gerne einen separaten Bearbeitungsrahmen. Es sieht so aus (Entschuldigung für mein einfaches ASCII-Diagramm):

%Vor%

Das funktioniert ziemlich gut, abgesehen von einem großen Problem. Wann immer gdb einen anderen Quellpuffer anzeigen muss, z. B. nach Auf / Ab / Schritt, wird es nicht immer im "Quell" -Fenster angezeigt. Wenn zum Beispiel der gleiche Puffer in einem Fenster in einem anderen Rahmen geöffnet ist, wird dieser Rahmen angehoben, während der Tastaturfokus im gdb-Rahmen bleibt. Dies ist wirklich ärgerlich bei einem Einzelmonitor-Setup, wenn sich die Bilder gegenseitig abdecken.

Ich möchte, dass gdb immer das Quellfenster im gdb-many-windows-Setup verwendet, um die Quelle anzuzeigen, egal ob der gleiche Quellpuffer an anderer Stelle angezeigt wird. Wie kann ich das tun?

BEARBEITEN: Weitere detaillierte Anweisungen zum Reproduzieren. Ich benutze Emacs 24.2.1 mit GDB 7.5-ubuntu. Ich habe dieses Problem auf Ubuntu 10.04 und Linux Mint Nadia mit Cinnamon gesehen.

  • Bewerten Sie diesen Ausdruck: (setq gdb-many-windows t)
  • Kompilieren Sie ein C-Programm mit mindestens zwei Dateien.

Zum Beispiel:

%Vor%
  • Lassen Sie bar.c im Hauptrahmen angezeigt werden. Öffne einen neuen Rahmen mit M-x 5 2 . Starten Sie in diesem Frame gdb mit M-x gdb . Es sollte sechs Fenster in diesem Rahmen geben, wie oben gezeigt. Positioniere den gdb-Rahmen über dem Quellframe.
  • Setzen Sie einen Haltepunkt in main und durchlaufen Sie Aufrufe von foo und bar . Wenn bar aufgerufen wird, wird der Hauptrahmen über den gdb-Rahmen angehoben, da bar.c bereits dort sichtbar ist, aber der Tastaturfokus bleibt im gdb-Rahmen.

Ich denke, die Problemfunktion ist gdb-display-source-buffer in gud.el.gz. Ich habe vor, dies mit defadvice zu umgehen, aber ich bin nicht wirklich mit Ratschlägen vertraut. Wenn ich es herausgefunden habe, werde ich hier eine Antwort posten.

    
Jay Conrod 26.11.2013, 19:52
quelle

3 Antworten

1

Ich habe 24.3. Und ich kann das Problem mit dieser Version nicht reproduzieren. Dort sieht gud-display-line folgendermaßen aus:

%Vor%

Die Einstellung window unterscheidet sich vollständig von Ihrer. Vielleicht ist der obige Code hilfreich oder vielleicht sollten Sie auf das neue gud / gdb-Zeug upgraden.

    
Tobias 04.12.2013, 22:31
quelle
2

Die Funktion, die dieses Problem verursacht, ist tatsächlich gud-display-line in gud.el.gz. Diese Funktion ist dafür verantwortlich, den Überlagerungspfeil im Quellfenster auf der aktuellen Zeile zu positionieren und sicherzustellen, dass er sichtbar ist. Hier ist die Logik:

%Vor%

Ich habe defadvice verwendet, um die gesamte Funktion zu überschreiben; Im Grunde habe ich die Quelle kopiert und die Fensterauswahllogik geändert.

%Vor%

Offensichtlich nicht die eleganteste Lösung. Es hilft auch nicht beim Umschalten von Frames (mit hoch / runter / Frame), also werde ich das bearbeiten, wenn ich das herausgefunden habe.

    
Jay Conrod 04.12.2013 22:15
quelle
-1

Ich betreibe Emacs 24.5 und für mich ist das immer noch ein Problem. Ich verwalte meine Fenster jetzt manuell mit dedizierten Fenstern, hauptsächlich mit der folgenden Funktion:

%Vor%

Dies zeigt das GUD-Fenster oben links, den IO-Puffer unten links und den Quellpuffer auf die rechte Seite. Der GUD und der IO-Puffer sind auf dediziert gesetzt.

    
Dominik Schrempf 01.06.2015 11:15
quelle

Tags und Links