Недавно наш большой проект начал рушиться при необработанном делении на ноль. Похоже, что в недавнем коде нет вероятных элементов, поэтому это могут быть новые наборы данных, влияющие на старый код. Проблема в том, что база кода довольно большая и работает на встроенном устройстве без удобного доступа к отладке (отладка выполняется многими printf () через последовательную консоль, GDB для устройства не существует, и даже если бы он был, двоичный файл, скомпилированный с символами отладки, не подходит).
Наиболее жизнеспособным способом, вероятно, было бы найти все операции деления (они относительно редки) и проанализировать код, окружающий каждую из них, чтобы увидеть, была ли какая-либо из переменных делителя оставлена без присмотра.
Тогда возникает вопрос, как найти все операции деления в большом (~ 200 файлах, несколько больших) проекте C ++, или, если у вас есть лучшее представление о том, как найти ошибку, укажите их.
дополнительная информация: проект выполняется на встроенном ARM9, небольшом пользовательском дистрибутиве Linux, кросс-компилированном с кросс-инструментами Cygwin / Windows, IDE - это Eclipse, но есть и Cygwin со всеми соответствующими вкусностями. Дело в том, что проект очень специфичен для оборудования, и сбои происходят только при работе на полную мощность, когда все необходимые взаимосвязанные модули активны. Ограниченный «режим отказа», когда активны только голые кости, не создает их.