如何在 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 提供有关未定义值来源的更多信息。
我正在调试 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 提供有关未定义值来源的更多信息。