Abgebrochen core dumped C++
Ich habe eine große C++ - Funktion, die verwendet OpenCV-Bibliothek und läuft unter Windows mit cygwin-g++ - compiler. Am Ende gibt es Aborted(core dumped), aber die Funktion läuft komplett vor. Ich habe auch versucht, die print-Anweisung am Ende der Funktion. Das wird auch gedruckt. Also ich denke, es gibt keine logischen Fehler im code, die generiert den Fehler.
Bitte erklären.
Ich bin auch mit assert-Anweisungen.Aber die abgetriebenen Fehler ist nicht durch die assert-Anweisung. Es sagt nicht, dass die assertion fehlgeschlagen ist. Es kommt am Ende nur ohne jede Nachricht.
Auch die Datei ist ein Teil von einem großen Projekt, so dass ich kann nicht nach dem code auch.
gdb Ergebnisse:
Program received signal SIGABRT, Aborted.
0x7c90e514 in ntdll!LdrAccessResource () from /c/WINDOWS/system32/ntdll.dll
Der code arbeitet. Es tut, was es soll. Ich sagte Ihnen der Druck der letzten Anweisung. Das problem ist nur, abnormale Beendigung.
Warum ist es abgestimmt? Seine eine echte Frage. Ich dachte, dies ist der richtige Ort das zu Fragen.
Vicky gab ziemlich gute Gründe für den nach-unten-Stimmen. Wenn Sie einen Fehler in Ihrem code, dass es vielleicht doch noch zu funktionieren scheint. Absturz am Ende ist nur einer der unendlich vielen Probleme, die durch solch ein nicht definiertes Verhalten. Jede chance, die Sie überprüfen Sie Ihre Programm mit einem tool wie
valgrind
für Windows ?weil es versuchen zu reinigen am Ende, und was Sie früher gemacht hat hat beschädigt den stack, den heap, die beiden....
InformationsquelleAutor avd | 2010-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie ein Speicher-Fehler (schreiben auf freigegebenen Speicher -, Doppel-frei, stack overflow,...). Wenn der code kann kompiliert werden und laufen unter Linux, die Sie verwenden können, valgrind, um zu sehen, wenn es Speicherprobleme. Sie können auch versuchen, deaktivieren Sie die Teile der Anwendung, bis das problem verschwindet, bekommt man einen Hinweis, wo der Fehler passiert. Aber diese Methode kann auch false-positives, da der Speicher Fehler verursachen können Module scheitern, die nicht die Ursache des Fehlers. Auch Sie können führen Sie das Programm in gdb. Aber auch hier ist die position der debugger Punkte möglicherweise nicht die position, wo der Fehler passiert ist.
InformationsquelleAutor Rudi
Sie nicht geben uns viel weiter zu gehen. Jedoch, dieses sieht wie Sie laufen in ein problem beim freigeben von Ressourcen. Vielleicht ein heap-Beschädigung. Haben Sie versucht, läuft es unter gdb und dann suchen, wo es abstürzt? Überprüfen Sie auch, ob alle Ihre new/delete Aufrufe übereinstimmen.
Sie können die
bt
Befehl in gdb zu bekommen den Stapel backtrace, wenn das programm abstürzt. Vielleicht der ursprünglichen aufrufenden Funktion ist dort zu sehen. Auch hilft es, wenn die Anwendung kompiliert wird mit gcc -g-switch.InformationsquelleAutor Michael Ulm
Laden Sie die core-dump zusammen mit der binary in den gdb zu bekommen, eine Idee, an welcher Stelle der Problemliste. Befehlszeile:
Weitere details zu gdb finden Sie unter GDB: GNU Project Debugger.
Alternativ können Sie das Programm unter gdb Kontrolle. Laden Sie es mit gdb <Pfad zum binary "> "und geben Sie "ausführen", wenn die gdb-Kommandozeile erscheint.
Ich bin mit einem ähnlichen problem finden Sie die core-dump. Ich nahm an, es war die .stackdump-Datei, aber es ist nicht
Hast du es herausfinden?
InformationsquelleAutor jopa
Führen Sie es durch AppVerifier und cdb.
E. g.
InformationsquelleAutor Alex Budovski