Мой C-сбой программы, если я включаю оптимизацию C -O2 или -fstrict-overflow (-O1 в порядке) - PullRequest
2 голосов
/ 26 апреля 2011

У меня есть C-программа (эй, я тут обманываю, ее сгенерированный C-код), которая вылетает (ошибка сегментации) всякий раз, когда я компилирую ее с флагом оптимизации gcc -O2.(gcc 4.6.0)

У вас есть идея, как я мог бы отладить это?

Я думаю, что я мог бы проверить, удалив оптимизации одну за другой, чтобы увидеть, какиеодна вызывает сбой моей программы ... но это может занять много времени.У вас есть идея получше?

Оптимизация, вызывающая проблему, - -fstrict-overflow.Я буду продолжать добавлять новую информацию, как она у меня есть.

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2011

Есть несколько недавних сообщений о проблемах компилятора с этим флагом (например, http://lists.debian.org/debian-gcc/2009/07/msg00168.html) - стоило бы скомпилировать с последним GCC (или другим компилятором, если это возможно) и посмотреть, решит ли это проблему. также запускайте с символами отладки в отладчике, если это полезно, и посмотрите, где он выходит из строя. Если этот окружающий код является явно пуленепробиваемым, то это еще больше оснований подозревать компилятор, в противном случае у вас есть где-то начать свои исследования.

...