2010-04-04 9 views
6

Ich weiß nicht, warum ich so viel Mühe habe,zu growing.emacs Debugger: Wie kann ich austreten, übertreten?

Ich sehe es hat einen Befehl zum "Einstieg" (d). Aber für das Leben von mir kann ich keinen Schritt-oder-Übertritt sehen.

Kann jemand helfen?

Wenn ich dies in den Backtrace Puffer:

... wo ich die Cursor setzen, und welche Schlüssel kann ich geben, aus dem Parse-Zustand() fn Schritt ? damit meine ich, lauf, bis das fn zurückkommt, und höre dann wieder im debugger auf.

Antwort

1

'c' und 'j' funktionieren wie ein Step-out und Step-over. Wenn ein markierter Rahmen (angezeigt durch "*") angetroffen wird (die Dokumente sagen "exited", aber dies scheint nicht zu sein, wie sich der Debugger verhält), wird der Debugger erneut eingegeben. Wenn der obere Rahmen markiert ist, funktionieren sie wie ein Step-Over; Wenn nicht, funktionieren sie wie Step-out.

In Ihrem Beispiel Backtrace, wird die Eingabe entweder aus line-beginning-position in c-parse-state. Das Rahmen-Flag sollte gelöscht werden, so dass die Eingabe entweder ein zweites Mal aus c-parse-state austreten sollte.

4

Beim Debuggen, drücke ich ? und ich sehe:

o    edebug-step-out 
f    edebug-forward-sexp 
h    edebug-goto-here 

I o glauben (es ist step-out) und f (wie Schritt über) sind das, was Sie suchen, obwohl ich äußerst nützlich auch h finden.

+0

Ich weiß, du wirst das schwer zu glauben finden, aber ich habe Debug verwendet, nicht edebug. Was für ein Unterschied! Danke für den Tipp. – Cheeso

+0

@Cheeso, ha! Ich wusste nicht einmal, dass es bis zu deiner Frage ein 'M-x debug 'gab. –

+0

Sie waren besser dran, nicht zu wissen. debug ist unmöglich zu benutzen. – Cheeso

0

Hm. I, für ein, bevorzugen debug zu edebug, aber zu jedem ihrer eigenen ...

Was debug, verwende ich d, c, e und q.

Wenn Sie debug verwenden Sie, eine Sache im Auge zu behalten, was Zeit und Mühe sparen kann, ist, dass, wenn Sie einen Makro-Aufruf (siehe beginnt mit #) Sie nur c das Makro zu erweitern treffen können - es gibt Normalerweise ist es nicht sinnvoll, den Makroexpansionscode zu untersuchen (es sei denn, Sie haben das Makro geschrieben, und Sie versuchen es zu debuggen).

Insbesondere für dolist, gibt es zwei Ebenen von macroexpansion über mit c überspringen: eine für dolist und eine für block.

HTH.

Verwandte Themen