14 Stimmen

gdb automatisieren: Backtrace bei jedem Aufruf der Funktion puts anzeigen

Ich möchte ein Programm debuggen. Ich brauche Backtraces von allen Aufrufen einer Funktion, z.B. puts.

Jetzt benutze ich solche gdb script :

set width 0
set height 0
set verbose off
break puts
commands 1
backtrace
continue
end

Aber wenn man es mit

gdb --batch --command=script --args ./some_program arguments

Ergibt einen Fehler:

Function "puts" not defined.
Make breakpoint pending on future shared library load? (y or [n]) [answered N; input not from terminal]
/root/script:5: Error in sourced command file:
No breakpoint number 1.

Wie kann ich im Skript einen Haltepunkt für einen Bibliotheksaufruf setzen?

20voto

Employed Russian Punkte 180738

Versuchen Sie stattdessen dies:

set width 0
set height 0
set verbose off
start  # runs to main, so shared libraries are loaded
       # after you reach main, GDB should have libc symbols, "puts" among them
break puts
commands 1
backtrace
continue
end

Sollte dies nicht funktionieren, geben Sie bitte die Version des Betriebssystems an.

EDIT: Wie osgx richtig bemerkt, besteht die andere Alternative darin, Folgendes hinzuzufügen

set breakpoint pending on

vor break puts

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X