2010-05-05 5 views
52

Im Moment verwende ich GDB, um eine Binärdatei zu disassemblieren und verschiedene Register und andere Dinge auszuprobieren. Gibt es einen einfachen Befehl, um alles auf dem Stapel zu untersuchen? Kann das auf alles in einer Funktion beschränkt sein?Wie kann ich den Stack-Frame mit GDB untersuchen?

+2

Dies sollte Ihnen helfen: http://cs.nyu.edu/courses/spring07/V22.0474-001/misc/gdb-refcard.pdf. Sie können immer den Befehl "frame" verwenden, um zwischen den Frames zu springen. – dicaprio

Antwort

55

Für den aktuellen Stack-Frame:

  • info Rahmen enthält allgemeine Informationen über den Rahmen (wo die Dinge im Speicher starten, etc.)
  • info args Listen Argumente für die Funktion
  • info lokal listet lokale Variablen auf, die im Rahmen gespeichert sind
38
  • bt (oder backtrace) erhalten Sie einen Aufruf-Stack.

  • frame <args> gibt Ihnen Informationen über einen bestimmten Frame aus dem Stapel.

  • info locals können Sie Informationen über alle lokalen Variablen auf dem Stapel geben.

74

Sie können den Inhalt des Stapels sehen mit x/10x $sp

druckt dieses die Top 10 der Elemente des Stapels.

+0

Welche Version von GDB ist das? Ich kann gdb nicht bekommen, Register als Befehlsargumente auf GDB zu benutzen 7.7-0ubuntu3.1 – nightpool

+1

@nightpool arbeitet für mich auf 7.7.1-0ubuntu5 ~ 14.04.2 –

+0

Dieses ist Antwort sagt Ihnen, wie man tatsächlich die Bytes auf dem Stapel betrachtet Rahmen, bei dem ich Schwierigkeiten hatte, herauszufinden, wie es geht. Vielen Dank! –

Verwandte Themen