Frage

ich einen Absturz wie diese:

#0  0x2c58def0 in raise () from /lib/libpthread.so.0
#1  0x2d9b8958 in abort () from /lib/libc.so.0
#2  0x2d9b7e34 in __malloc_consolidate () from /lib/libc.so.0
#3  0x2d9b6dc8 in malloc () from /lib/libc.so.0

Ich denke, es ist ein Heapbeschädigung Problem. uclibc nicht mcheck / mprobe haben. Valgrind scheint nicht zu MIPS-Unterstützung und meine app (die multi-threaded ist) hängt von hw spezifischen Treibern. Alle Vorschläge, die Konsistenz des Haufens zu überprüfen und Korruption zu erkennen?

War es hilfreich?

Lösung

Ich würde verwenden, um einen Ersatz malloc () (siehe auch < a href = "https://stackoverflow.com/questions/2877527/use-openbsds-malloc-realloc-and-free-in-my-program/2883590#2883590"> diese Antwort ), die leicht sein kann gemacht ausführlicher zu sein. Ich sage nicht, dass Sie die Garbage Collection benötigen, aber Sie scheinen die zusätzliche Protokollierungsmöglichkeiten zu müssen, dass der Link zur Verfügung stellt.

Wenn es Heapbeschädigung ist, wird der Kollektor geht auch auf sie ersticken, und geben Sie sinnvoller Botschaften. Es sollte nicht allzu schwierig sein, zu verwenden, bekommen, was Sie brauchen, dann verwenden stoppen (vor allem, wenn Sie es gerade abfangen malloc() lassen).

Sein Gehen nicht auf Null in dem Problem wie Valgrind tut, aber zumindest seiner Option:)

Andere Tipps

Sie könnten Stub Treiber schreiben, die so tun, als die Hardware sein, die Sie bauen und testen Sie Ihr Programm in eine voll funktionsfähige Umgebung lassen sollten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top