我正在使用一个大型 C 库,其中一些数组索引是使用 int
计算的。
我需要找到一种方法来在运行时捕获整数溢出,从而缩小到有问题的代码行。 Libc 手册指出:
FPE_INTOVF_TRAP Integer overflow (impossible in a C program unless you enable overflow trapping in a hardware-specific fashion).
但是 gcc 选项 -ffpe-trap
建议那些只适用于 FP 数字?
那么我如何启用整数溢出陷阱呢?我的系统是Xeon/Core2, gcc-4.x, Linux 2.6
我看过类似的问题,但它们都归结为修改代码。但是,我首先需要知道哪个代码有问题。
如果 Xeons 无法捕获溢出,哪些处理器可以?我也可以访问非 emt64 机器。
我同时找到了一个为 llvm 设计的工具:http://embed.cs.utah.edu/ioc/ 然而,似乎没有 gcc/icc 的等价物?
最佳答案
好吧,我可能不得不回答我自己的问题。
我发现 gcc 有 -ftrapv
选项,一个快速测试确认至少在我的系统上溢出被捕获了。当我了解更多信息时,我会发布更详细的信息,因为它似乎是非常有用的工具。
关于c - 检测整数溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10200462/