c - 检测整数溢出

标签 c debugging operating-system

我正在使用一个大型 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/

相关文章:

c - 如何像在窗口顶部使用 X 底部一样关闭窗口?必须调用关联的 "destroy"

c - 将 .Glade(或 xml)文件转换为 C 源代码的工具

CS50 PSET1 贪婪 - 分配错误并使用模 (C)

.net - 附加过程错误 VS C++ .NET

linux - 为什么可以在 MacOS 上的 docker 上运行 Linux 容器

c - 如何显示用户输入的最早日期?

c++ - 看不到局部变量值

c# - 在 Visual Studio 2015+ 中,如何确定哪个对象导致了 null 异常?

operating-system - 如何将数据直接写入显存?

c - 数据类型的大小是否因操作系统或平台而异?