Я работаю с большой библиотекой C, где некоторые индексы массива вычисляются с использованием int
. Мне нужно найти способ перехватывать целочисленные переполнения во время выполнения таким образом, чтобы сузить проблемную строку кода. В руководстве по Libc указано:
FPE_INTOVF_TRAP Целочисленное переполнение (невозможно в программе на языке C, если только вы не активируете отлов переполнения аппаратно-зависимым способом).
однако опция gcc -ffpe-trap
предполагает, что они применимы только к номерам FP?
Итак, как мне включить ловушку целочисленного переполнения? У меня система Xeon/Core2, gcc-4.x, Linux 2.6
. Я просмотрел похожие вопросы, но все они сводятся к модификации кода. Однако мне нужно знать, какой код проблематичен в первую очередь.
Если процессоры Xeon не могут перехватывать переполнения, то какие процессоры могут? У меня также есть доступ к машинам, отличным от-emt64.
Тем временем я нашел инструмент, предназначенный для llvm.:http://embed.cs.utah.edu/ioc/ Похоже, однако, что нет эквивалента для gcc/icc?