使用valgrind的C程序浮点陷阱

时间:2012-07-26 17:44:29

标签: c valgrind nan floating-point-exceptions

我正在试图找出如何找到用C编写的模拟代码生成NaN的确切位置。 我正在使用简单的C89(但我可以转到C99 / C11)和gcc 4.4.5在Debian上挤压。

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

您是否继续在C源中找到这类错误的起源?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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

watch var==NaN

这让你知道一个变量在什么时候变成NaN,如果那不是有罪操作本身,而是一个返回值,你自己将一个函数移到内疚链上并在该函数中设置一个观察点,等等,直到你看到错误。

我希望这有点帮助:)。

相关问题