Linux core dumps sind zu groß!
Vor kurzem ich ve wurde bemerken eine Zunahme in der Größe des core-dumps erzeugt, die durch meine Anwendung. Ursprünglich waren Sie nur rund 5 MB groß und enthalten etwa 5 stack-frames, und jetzt habe ich core-dumps von > 2GBs und die darin enthaltenen Informationen sind nicht anders als die kleinere dumps.
Gibt es eine Möglichkeit, kann ich die Größe eines core-dumps generiert? Sollten Sie nicht sein, zumindest kleiner als die Anwendung mit binären selbst?
Binaries kompiliert werden, auf diese Weise:
- Zusammengestellt im release-Modus mit debug
Symbole (dh-g-compiler-option in
GCC). - Debug-Symbole werden kopiert, auf ein
separate Datei und entfernt
binären. - Ein GNU-debug-Symbole link Hinzugefügt
der binären.
Am Anfang der Anwendung, es ist ein Aufruf setrlimit
stellt die Kern-Grenze zur Unendlichkeit -- Ist das das problem?
- Stoppen Fütterung Ihrer app burritos.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja nicht reservieren, so viel Speicher 🙂
Den core-dump enthält das vollständige Bild von Ihrer Anwendung Adressraum, einschließlich code, stack und heap (malloc würd Objekte etc.)
Wenn Ihr core-dumps sind >2 GB, das bedeutet, dass an einem gewissen Punkt, den Sie reserviert so viel Speicher.
Können Sie setrlimit eine Untergrenze für die core-dump-Größe, mit dem Risiko, am Ende mit einem core-dump, können Sie nicht entschlüsseln, denn es ist unvollständig).
mmap
, dann erhalten Sie die Datei in Ihrem dump zu.Ja, setrlimit ist, warum Sie immer große core-Dateien. Sie können den Grenzwert auf dem core-Größe in den meisten shells, z.B. die bash, die Sie tun können
ulimit -c 5000000
. Ihre setrlimit Anruf außer Kraft setzen, aber./etc/security/limits.conf kann verwendet werden, um Obere Grenzen auf den Kern Größe.