5 Stimmen

Valgrind (unterhalb von main), wie erhält man einen vollständigen Stack-Trace?

Ich habe den folgenden Stack-Trace von valgrind. Aber es gibt mir nicht die vollständige Stack-Trace.

==2433== Invalid free() / delete / delete[] / realloc()
==2433==    at 0x402B06C: free (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==2433==    by 0x43F345B: av_freep (mem.c:172)
==2433==    by 0x5A6F4D2: (below main) (libc-start.c:226)

In gdb, I denken Ich erhalte denselben Fehler:

#5  0xb7c1345c in av_free (ptr=<optimized out>) at libavutil/mem.c:172
#6  av_freep (arg=0x88a2e48) at libavutil/mem.c:181
#7  0xb7c165c8 in av_opt_free (obj=0x88a2ba0) at libavutil/opt.c:787
#8  0xb6b56efc in avcodec_close (avctx=0x88a2ba0) at libavcodec/utils.c:1675
#9  0x0808a3e0 in encode_lavc_finish (ctx=0x8343a40) at encode_lavc.c:288
#10 0x08077d0b in exit_player_with_rc (mpctx=0x8313058, how=EXIT_EOF, rc=0)
at mplayer.c:705
#11 0x0806ced0 in main (argc=8, argv=0xbffff374) at mplayer.c:4771 

Aber mit der gdb-Spur geht es den ganzen Weg bis zu main() .

Wie bekomme ich den vollständigen Stack-Trace in valgrind, ist überhaupt möglich?

4voto

Employed Russian Punkte 180738

In gdb erhalte ich wohl den gleichen Fehler

Sie haben keine Fehler in GDB. Sie haben einen Haltepunkt auf av_free , aber sicher av_free wird als Los und Sie haben keinen Beweis dafür geliefert, dass dieser spezielle Aufruf derjenige ist, der den Valgrind-Fehler auslöst.

Es ist sehr wahrscheinlich, dass einige andere Aufruf an av_free tatsächlich den Valgrind-Fehler auslöst, und es ist auch sehr wahrscheinlich, dass dieser Aufruf von atexit Handler ist der Valgrind-Stack in der Tat einen vollständigen Stack-Trace.

Wenn Sie eine aktuelle Version von Valgrind verwenden, können Sie das unter Valgrind laufende Programm mit --vgdb-error=1 und GDB anhängen genau wo das Problem auftritt. Dokumentation aquí .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X