如何在 Valgrind 中查找未初始化值的来源

How to find where an uninitialised value comes from in Valgrind

我正在调试 tinyscheme 版本 v 1.41。 Valgrind 指出

==16675== Conditional jump or move depends on uninitialised value(s)
==16675==    at 0x4062C4: opexe_0 (scheme.c:2579)
==16675==    by 0x403C5E: Eval_Cycle (scheme.c:4471)
==16675==    by 0x40A3AC: scheme_load_named_file (scheme.c:4830)
==16675==    by 0x40A878: main (scheme.c:5118)
==16675== 
==16675== Conditional jump or move depends on uninitialised value(s)

==16675==    at 0x406324: opexe_0 (scheme.c:2586)
==16675==    by 0x403C5E: Eval_Cycle (scheme.c:4471)
==16675==    by 0x40A3AC: scheme_load_named_file (scheme.c:4830)
==16675==    by 0x40A878: main (scheme.c:5118)

这个未初始化的值是某个对象内部的类型信息。似乎正在创建一些没有类型信息的对象。我很想知道该内存何时分配,或者该位置是否被其他未初始化的数据覆盖。

有没有办法告诉 Valgrind,"tell me when and where that memory was allocated"?

选项

--track-origins=no|yes           show origins of undefined values? [no]

指示 valgrind 提供有关未定义值来源的更多信息。