Corro Valgrind con i seguenti parametri:Come ottenere lo stack completo di chiamate da Valgrind?
--leak-check=full --show-reachable=yes --leak-resolution=high --num-callers=100 --trace-children=yes
In perdite di memoria di registro, vedo alcuni messaggi di errore con stack completo traccia fino a principale, ma alcuni messaggi sembro seguente:
==3956== 1,999,140 (68,796 direct, 1,930,344 indirect) bytes in 5,733 blocks are definitely lost in loss record 8,842 of 8,845
==3956== at 0x4022AB8: malloc (vg_replace_malloc.c:207)
==3956==
Come posso ottenere la traccia dello stack completo per questi errori?
L'ultima versione rilasciata di Valgrind supporta solo --num-chiamanti fino a 50. Pertanto, non è chiaro quale versione si sta utilizzando. La traccia dello stack di cui sopra sembra incompleta. Questo potrebbe essere collegato al modo in cui la tua applicazione è compilata (ad esempio l'opzione -fomit-frame-pointer potrebbe rendere la traccia dello stack più difficile da produrre) – phd
Bump. (i messaggi "bump" di stackoverflow?) Lo stesso problema. Compilare un'applicazione con -g. Mostra possibili perdite di memoria con una traccia stack che inizia da malloc(), la funzione che si chiama malloc(), quindi main(), saltando tutto ciò che si trova in mezzo, incluse le funzioni all'interno dello stesso file di main(). ?? Vedo esempi online che non hanno questo limite di frame di 3 stack .. ?? Qualche idea? – Samuel
Sto usando valgrind 3.8.1 su Ubuntu 13.10 e vedo tracce dello stack che non contengono tutte le chiamate intermedie. Nessuna ottimizzazione durante la compilazione con gcc (o forse ho bisogno di -Og o qualcosa del genere ...) – thoni56