Как найти & quot; индекс вне границ & quot; если я не получу ошибку сегментации

У меня есть программа, которая вызывает ошибку сегмента в машине, которая мне недоступна. Однако, когда я компилирую и запускаю его с тем же компилятором и тем же вводом на моей машине, я ничего не получаю. Проблема, вероятно, заключается в том, что «индекс массива вышел за пределы», что может в некоторых случаях привести к сбою сегмента, однако компилятор не выдает никакого предупреждения. Программа огромна и сложна. Поэтому я не могу найти проблему, просто проверив код.

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

2

Решение

Вы могли бы использовать valgrind если он работает на машине Linux.
Использовать valgrind вы просто печатаете на консоли:

valgrind --leak-check=full --num-callers=20 --tool=memcheck ./program

и должен вернуть недопустимое чтение / запись размера X в соответствии с переменной и (если вы скомпилировали с отладочной информацией), он сообщит вам строку, где может быть проблема.

Кстати, вы можете установить valgrind в Ubuntu / Debian Linux (например) так же просто, как:

sudo apt-get install valgrind
6

Другие решения

Вы можете попробовать такое решение, как Valgrind, как упоминалось в других постерах, или ваш компилятор может также иметь какую-то особую возможность вставлять защитные слова до того, как я обнаружу повышение для обнаружения такого типа доступа.

0

По вопросам рекламы [email protected]