2010-11-15 8 views
8

Verstehen Wenn Sie ein Programm debuggen, die mit einem segfault, Elektrozaun endet, mit gdb in Verbindung, gibt diese:die Ausgabe des Elektrozauns und GDB

"ElectricFence Exiting: mprotect() failed: Cannot allocate memory [Thread 0xb0bd4b70 (LWP 5363) exited] Program exited with code 0377.

ich eigentlich dachte, Elektrozaun wäre hilfreich . Was bedeutet das? Wie kann ich diese Information interpretieren? Es scheint keinen Stack mehr zu geben, den ich anschauen kann, oder zumindest bt wird nichts zurückgeben.

Jeder Vorschlag würde wirklich geschätzt werden.

Danke!

+0

Auch wenn ich das Programm debuggen, sieht es nicht wie es ist, den gesamten Speicher raubend ... immer noch da ist ~ 1GB übrig, das ist die Hälfte davon. Also sollte ich mich nicht einmal mit Swap Space beschäftigen, oder? –

Antwort

4

Die Ausgabe von ElectricFence bedeutet einfach, dass es nicht genügend Speicher und kann Ihnen nicht helfen.

ElectricFence erzwingt extrem hohen Speicheraufwand, vor allem für Programme mit vielen kleinen Heap-Zuordnungen.

Wenn Sie unter Linux sind, versuchen Sie stattdessen Valgrind.

Beachten Sie auch, dass Ihr erster Schritt für ein Programm, das mit SIGSEGV stirbt, nicht sein sollte, die es mit ElectricFence läuft; eher sollten Sie das Programm unter Debugger ausführen und sehen, wo es abstürzt.

+0

Hmm ... Ich habe immer noch viel Speicher verfügbar, wenn diese Nachricht zurückkommt. Könnte es nur darum gehen, alles auf einmal zu benutzen? Das ist seltsam. –

+0

Also, wann genau sollte ich Elektrozaun verwenden, wenn nicht in diesem Fall? –

14

Sie haben wahrscheinlich keine Speicherkartenbereiche mehr. Es ist bekannt, dass der Standardwert niedrig ist, wenn Debug-Zuordner verwendet werden.

vm.max_map_count = 128000 

Die max_map_count Nummer standardmäßig auf 65530 erhöht werden und kann so hoch wie MAX_INT: Dies kann über

echo 128000 > /proc/sys/vm/max_map_count 

oder durch das Hinzufügen dieser Zeile /etc/sysctl.conf und Neustart zur Laufzeit eingestellt werden, Falls benötigt.

Weitere Informationen finden Sie unter:

Verwandte Themen