Ich habe in GDB (C-Code) debuggen. Das Problem ist, wenn ich meine Anwendung ausführen und wenn es abstürzt, kommt die Kontrolle zurück zu main() (App startet neu). Daher wird keine Ahnung haben, wo es abgestürzt ist. Ich verbringe also viel Zeit damit, jede Funktion zu durchlaufen.Hilfe für Debug-Crash-Protokollierung von gdb
Ich würde gerne wissen, ob es trotzdem ein Protokoll aktiviert werden kann, die die letzte Zeile der Ausführung vor dem Absturz erzeugen wird. Dies ist nur meine Annahme, wenn es einen einfacheren Weg gibt, lass es mich wissen, das würde mir viel Zeit sparen!
Auch wenn der gdb ein Protokoll erzeugt wo wäre der Pfad?
Vielen Dank im Voraus.
Können Sie "Crash" definieren? Wenn es ein unbehandeltes Signal (z. B. SIGSEGV) gibt, sollte GDB es abfangen und sofort aufhören, aber es hört sich so an, als würde es nicht passieren. Sie müssen also auf andere Weise "abstürzen". –
GDB kann vordefinierte Befehle verarbeiten, wenn Sie können. Oder, wenn Sie mit Protokoll einen Stack-Trace meinen, schauen Sie sich http://tlug.up.ac.za/wiki/index.php/Ob- taining_a_stack_trace_in_C_upon_SIGSEGV an. Es zeigt, wie ein Stack-Trace auf SIGSEGV generiert wird. Wenn Sie wissen, welches Signal Ihren Absturz verursacht, generieren Sie den Stack-Trace beim Empfang dieses Signals anstelle von SIGSEGV. – vpit3833
Die Steuerung, die zu main() und dem Neustart der Anwendung zurückkehrt, ist nicht wirklich das Gleiche - startet sie tatsächlich in Zeile 1 von main() neu, oder kommt sie gerade zurück in die Zeile, nachdem ein Funktionsaufruf einen Fehler hatte und zurückgegeben wurde? – Cascabel