Beim Debuggen eines Programms, das mit einem segfault endet, gibt electric fence in Verbindung mit gdb Folgendes zurück:
"ElectricFence Exiting: mprotect() failed: Cannot allocate memory
[Thread 0xb0bd4b70 (LWP 5363) exited]
Program exited with code 0377.
Ich dachte eigentlich, Elektrozaun wäre hilfreicher. 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!
Sie haben wahrscheinlich keine Speicherkartenbereiche mehr. Es ist bekannt, dass der Standardwert niedrig ist, wenn Debug-Zuordner verwendet werden. Dies kann zur Laufzeit über
angepasst werden %Vor%oder indem Sie diese Zeile zu /etc/sysctl.conf hinzufügen und neu starten:
%Vor%Die max_map_count-Nummer ist standardmäßig 65530 und kann bei Bedarf bis auf MAX_INT erhöht werden.
Weitere Informationen finden Sie unter
Die Ausgabe von ElectricFence bedeutet einfach, dass es nicht genug Speicher hat und Ihnen nicht helfen kann.
ElectricFence erzwingt extrem hohen Speicheraufwand, insbesondere für Programme mit vielen kleinen Heapzuweisungen.
Wenn Sie Linux verwenden, versuchen Sie stattdessen Valgrind.
Beachten Sie auch, dass Ihr erster Schritt für ein Programm, das mit SIGSEGV
stirbt, nicht mit ElectricFence ausgeführt werden sollte; Stattdessen sollten Sie das Programm unter Debugger ausführen und sehen, wo es abstürzt.
Tags und Links debugging gdb segmentation-fault electric-fence