GDB nicht zeigen, Funktionsnamen
Ich bin debugging aus einem embedded-Gerät mit gdbserver:
./gdbserver HOST:5000 /home/test_app
In meinem PC, führe ich den gdb auf diese Weise:
arm-none-linux-gnueabi-gdb test_app
Sobald die Anwendung ausgeführt wird, erhalte ich die Segfault ich Debuggen will, aber es ist unmöglich zu wissen, welche Linie produziert es:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 715]
0x31303030 in ?? ()
(gdb) bt
#0 0x31303030 in ?? ()
#1 0x0000dff8 in ?? ()
#2 0x0000dff8 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(Ich muss sagen, ich bin Total neu GDB)
- Welche flags hast du kompilieren mit? Tut GDB wissen, wo Ihre Quelldateien aus, so kann es Anzeige die Zeile, die es auf angehalten?
- Ich verstehe es nicht. Ihr PC ist ARM? Und Sie scheinen nicht zu werden, die Verbindung zum GDB-server.
- Könnten Sie bitte post dein compiler die Ausführung der Linie und Ihre vollen GDB-Befehle? Ich Stimme mit Tomalak Geret'kal, dass es definitiv etwas fehlt hier, zumindest die Verbindung zum GDB-server und der Befehl für das festlegen der source-Verzeichnis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok dies geschieht normalerweise, wenn die debug-Symbole fehlen... nur um sicher zu gehen führen Sie folgende Befehle
erhalten Sie info über Ihre binäre wie format, Bogen etc.. letzten Teil der info wird beschrieben, wenn die Binärdatei entfernt wird oder nicht. Für die Fehlersuche in GDB, der binäre sollte nicht genommen worden.
Wenn Sie einige gültige druckt als unter es bedeutet, dass die debug-Symbole vorhanden sind.
Weiter, wenn Sie GDB aufrufen, sollten Sie haben folgende Zeile
An diesem Punkt sollten Sie in der Lage sein zu Liste Quellen mit
list
Befehl.Stellen Sie sicher, dass gdb und gdbserver haben gleiche versioninig.
Wenn alle der oben genannten sind wahr, und Sie noch nicht bekommen, backtrace, es ist etwas schlimmes passiert mit Ihrem stack. Versuchen Sie, einige statische Analyse, die valgrind-code /neu hinzugefügten code.
Müssen Sie erstellen Sie Ihre Anwendung mit den debug-Symbolen aktiviert. Der Schalter für den gcc ist
-g