gpt4 book ai didi

c - 使 valgrind 在未初始化的值上快速失败

转载 作者:太空狗 更新时间:2023-10-29 15:39:45 36 4
gpt4 key购买 nike

Valgrind memcheck 使用一系列启发式方法来避免对“无害”使用未初始化值的误报,因为这种使用在正确和不正确但功能正常的代码中都很常见。

特别是,它不会呕吐,直到您以一种严肃的、也许是“不可逆”的方式实际使用这样的值,例如,根据它的值跳跃。

这意味着有时错误发生在距离问题根源很远的地方,甚至无法确定涉及哪个值。是否有某种方法可以在运行时“检查”一个值,比如 use(x) 如果 x 未初始化,这将使 Valgrind 在该点发出错误?

最佳答案

您可以让您的use(x) 宏使用Valgrind VALGRIND_CHECK_VALUE_IS_DEFINED Client Request当场得到一个错误。

为此,包括 valgrind/memcheck.h 并将宏定义为

#define use(x) VALGRIND_CHECK_VALUE_IS_DEFINED(x)

并确保始终传递左值。

您还可以使用 --track-origins=yes 运行 memcheck 以进行更重的跟踪,以显示未初始化数据的来源。

另见 the Valgrind FAQ on uninitialised value errors ,这解释了两者,以及为什么 Valgrind 不提示复制未初始化的值。

关于c - 使 valgrind 在未初始化的值上快速失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56846012/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com