2012-12-19 5 views
6

Ich checke einen segfault in einer unserer Apps aus. Eine kurze Zeit nach dem Start der App, die wichtigsten gdb Statusleiste Änderungen:Verwendung von gdb -i = mi Integration in Emacs 24

(Debugger: run [Signal-Eingang])

A (gdb) Eingabeaufforderung angezeigt, aber der Inhalt aller anderen Fenster bleiben unverändert (leer). An der Eingabeaufforderung nichts zu tippen, tut nichts - gdb scheint zu hängen. Das Ausführen der gleichen Schritte auf der command line führt zu der erwarteten Ausgabe von gdb mit einer vollständigen und richtigen Backtrace.

Dies ist mein erstes Mal Debugging mit der -i=mi Integration zwischen emacs und gdb. Ich benutze emacs 24.2 und gdb 7.5.

Gibt es irgendwelche Vorschläge, wie ich das weiter debuggen kann?

Ist es möglich, den Integrationsgrad zu reduzieren? Würde ich damit feststellen können, welcher Bereich das Problem verursacht?

Ein letzter Punkt ist, dass die anfängliche Belastung der App etwa 70s im Vergleich zu etwa 3s aus der command line dauert.

Antwort

8

Die Ladezeit kann reduziert werden, indem gdb-create-source-file-list auf nil eingestellt wird (Verwendung anpassen). Sehen Sie in der Dokumentation nach, was dies bewirkt und warum es die Ladezeiten in einigen Fällen wesentlich erhöht.

+0

Spot auf. Aus diesem Grund habe ich eigentlich auf 23 heruntergestuft - hoffentlich kann ich jetzt bei der neuesten Version bleiben. –

8

Sie können M-x gud-gdb verwenden, um den alten gud-Modus zu verwenden (d. H. Ohne die mi Interaktion). Weniger schick, aber zuverlässiger.

+0

Danke für die Antwort. Meintest du "ohne" die "mi" Interaktion? Vielleicht mache ich etwas falsch, aber der 'gud-gdb'-Modus scheint ziemlich weit zurück von' --annotate = 3 'zu sein. Insbesondere die Verbindung zwischen dem Debug-Ort und der Quelle. Gibt es eine Möglichkeit, dies anzugehen? Wenn es an einem Unterbrechungspunkt aufhört, bekomme ich^^ Z/home/richard /.../ main.cpp: 235: 5568: beg: 0x80a17d3'. –

+0

Wird das alte 'gdb-ui'-Modul in Emacs 24 funktionieren? –

+0

Scheint die Antwort ja. –

4

Es scheint, dass gdb-ui von 23 Emacs noch 24 in Emacs arbeiten:

  • eine Kopie gdb-ui finden (In meinem Fall gdb-ui.el.gz und gdb-ui.elc aus einem Backup)
  • Ort, um diese in ein Verzeichnis (I haben ~/emacs-modes) hinzugefügt

Dann fügen Sie den folgenden Code zu Ihrem .emacs:

(add-to-list 'load-path "~/emacs-modes") 
(require 'gdb-ui) 

Das Ausführen von gdb wird jetzt den alten --annotate=3-Modus statt -i=mi verwenden.