2012-06-07 26 views
5

Ich führe ein Programm aus, das mit einer Abbruchfalle fehlschlägt (Fehlercode 12). Um den Fehler zu debuggen, benutze ich Valgrind, aber jedes Mal, wenn ich es laufe, stürzt Valgrind selbst mit einer "Killed" -Nachricht und sonst nichts ab (die Ende-Nachrichtenheap-Zusammenfassung usw. wird nicht angezeigt). Ich kann nichts über Google oder SO dazu finden und ich hoffe, dass jemand etwas Licht in die Frage bringen kann, was diesen Fehler verursacht und wie man ihn debuggt.valgrind Meldung "Killed"

Jede Hilfe wird geschätzt!

+1

[Dieser Forumpost] (http://www.linuxquestions.org/questions/slackware-14/valgrind-crashes-at-start-up-with-killed-error-message-437863/) scheint zu sagen " Getötet "zeigt sich, egal wie Valgrind ausgeführt wird, ist das in deinem Fall dasselbe? Probieren Sie es mit 'valgrind --help' aus. – Collin

+0

Nein, Valgrind läuft in anderen Situationen gut. Ich habe es verwendet, um einen früheren Speicherfehler auf demselben Computer heute früher zu debuggen. Es passiert nur in diesem speziellen Fall. – Jack

Antwort

5

Ich denke, Ihr Prozess wird wahrscheinlich durch das Out of Memory-System des Kernels getötet - wenn das System nicht genügend Speicher hat, wird ein Prozess auf eine Weise töten, die nicht gefangen werden kann, weshalb Valgrind ist ohne zu sagen etwas.

Vermutlich verwendet Ihr Programm viel Speicher und, wenn es unter valgrind ausgeführt wird, wo zusätzlicher Speicher benötigt wird, um die Definiertheit des Speichers zu verfolgen, ist nicht genügend Speicher verfügbar und der (zweifellos sehr große) valgrind-Prozess wird beendet.

Wenn ich richtig liege, dann brauchen Sie eine Maschine mit mehr Speicher, oder zumindest mit mehr Swap, um Ihr Programm unter valgrind ausführen zu können.

+0

Es stellte sich heraus, dass ein großer Teil des Speichers wiederholt zugewiesen wurde, aber in einer Schleife nicht vollständig freigegeben wurde, was zu einer viel größeren Speicherauslastung führte, als ich dachte. Danke für die Einsicht! – Jack

+0

Gibt es eine Möglichkeit zu bestätigen, wenn Valgrind nur durch Speicherprobleme getötet wird? –

0

Dies kann auch passieren, wenn Ihr Computer nicht standardmäßige Speicherzuweisung verwendet, z. B. mit einem Coprozessor (GPU, FPGA), der über einen eigenen physischen Speicher verfügt, auf den im Speicher des Prozessors zugegriffen wird.

In unserem Fall musste der Anbieter sein Framework für die Arbeit mit Valgrind anpassen.