wie zu sehen segmentation fault (core dumped)
Ich bin nicht in der Lage, vorwärts zu bewegen in zu bekommen, um zu sehen, den Kern weggeworfen.
Habe ich, als ich getippt
gdb normal_estimation core
Reading symbols from /home/sai/Documents/pcl_learning/normal_estimation/build/normal_estimation...(no debugging symbols found)...done.
warning: core file may not match specified executable file.
[New LWP 11816]
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Core was generated by `./normal_estimation'.
Program terminated with signal 11, Segmentation fault.
#0 0xb53101d6 in free () from /lib/i386-linux-gnu/libc.so.6
(gdb)
Bitte lassen Sie mich wissen, was soll ich tun?
no debugging symbols found
: das ist ein Hinweis. Aktivieren Sie Debuggen, wenn Sie den code zu kompilieren (deaktivieren Optimierungen hilft auch viel mit Debuggen).ich habe die kompilierte Datei mit machen. Wie kann ich einen debug-Symbole
Nein, Sie haben kompiliert Ihren code mit einem compiler (wahrscheinlich gcc). Lesen Sie die Dokumentation, um herauszufinden, wie man es benutzt.
ich benutzt cmake und dann machen
cmake und machen Sie nur aufrufen, Ihre compiler. Sie benötigen, um Ihnen zu sagen, wie pass entsprechenden Optionen für den compiler. Da Sie noch keinen alle Infos über Ihre makefiles, es ist bis zu Ihnen, es herauszufinden.
InformationsquelleAutor Sai | 2013-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der erste Befehl, den Sie lernen müssen, ist
backtrace
(oder das synonym:where
).Dies wird Ihnen sagen, welcher code aufgerufen wird, die
free
, die abgestürzt ist.Es ist jedoch möglich, dass code, der nichts zu tun hat mit dem eigentlichen problem: alle Absturz in
free
ist immer verursacht durch heap-Beschädigung irgendeiner Art der (die Befreiung un-allozierten Speicher freigeben den gleichen Speicher zweimal, in den Speicher geschrieben wird, der bereits freigegeben wurde, oder überfüllt zugewiesenen Puffer).Der nützlichsten Werkzeuge zur diagnose heap-Beschädigung auf Linux sind Valgrind und AddressSanitizer. Die Chancen sind entweder von diesen Werkzeugen wird Ihnen sagen genau, was Sie falsch machen.
Ich habe versucht, valgrind und es gab diese Zusammenfassung. FEHLER-ZUSAMMENFASSUNG: 0 Fehler von 0 Kontexten (unterdrückt: 0 von 0) Illegal instruction (core dumped)
noch eine Sache...wenn ich sehe, auf web, alle Programme sind kompiliert mit g++ oder gcc aber hier habe ich ein CMakeLists.txt und so mache ich cmake und dann machen. ALSO ich bin nicht in der Lage, die korrekte Verwendung der Ressourcen aus dem web
InformationsquelleAutor Employed Russian