【问题标题】:Floating point trap with C program using valgrind使用 valgrind 的 C 程序的浮点陷阱
【发布时间】:2023-04-11 10:53:01
【问题描述】:

我试图弄清楚如何找到用 C 编写的模拟代码生成 NaN 的确切位置。 我在 Debian Squeeze 上使用普通 C89(但我可以迁移到 C99/C11)和 gcc 4.4.5。

显然有一个patch 用于 valgrind 应该能够执行此检查。 不幸的是,它不包含在 Debian 分发的二进制文件中。 实际上,尝试编译 vanilla valgrind 加上 exp-floattrap 也不起作用(它似乎不包含在最终的可执行文件中)。

您是否继续在 C 源代码中查找此类错误的来源?

感谢您的帮助。

【问题讨论】:

    标签: c valgrind nan floating-point-exceptions


    【解决方案1】:

    我承认我根本不使用 valgrind,只是因为我不需要它,但是如果您要寻找的只是单个变量设置为 NaN 的情况,您可以不只使用GDB(或类似),并为变量设置一个观察点,例如:

    watch var==NaN
    

    这让你知道一个变量在什么时候变成了 NaN,如果这不是有罪操作本身,而是一个返回值,你将自己移动到有罪链上的一个函数并在该函数中设置一个观察点,以此类推,直到您看到错误为止。

    我希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 1970-01-01
      • 2015-06-06
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多