Ich debugge von einem eingebetteten Gerät mit gdbserver:
%Vor%In meinem PC führe ich gdb auf diese Weise aus:
%Vor%Sobald die Anwendung ausgeführt wird, erhalte ich den Segfault, den ich debuggen möchte, aber es ist unmöglich zu wissen, welche Zeile sie erzeugt hat:
%Vor%(Ich muss sagen, ich bin völlig neu in GDB)
Ok, das passiert normalerweise, wenn Debug-Symbole fehlen ... nur um sicherzustellen, dass Befehle ausgeführt werden
%Vor%Sie erhalten Informationen über Ihr binäres Format, Bogen usw. Der letzte Teil der Informationen beschreibt, ob die Binärdatei entfernt wurde oder nicht. Zum Debuggen in GDB sollte die Binärdatei nicht entfernt worden sein.
%Vor%Wenn Sie gültige Ausdrucke wie unten haben, bedeutet das, dass Debug-Symbole vorhanden sind.
%Vor%Wenn Sie GDB aufrufen, sollten Sie folgende Zeile haben
%Vor% An dieser Stelle sollten Sie Quellen mit list
command auflisten können.
Stellen Sie sicher, dass sowohl gdb als auch gdbserver dieselbe Version haben.
%Vor%Wenn all die obigen Aussagen zutreffen und Sie immer noch keine Rückverfolgung erhalten, ist Ihr Stack ziemlich schlecht. Versuchen Sie, eine statische Analyse durchzuführen, Valgrind auf Ihrem Code / neu hinzugefügten Code.
Tags und Links c++ gdb segmentation-fault