Как найти "index out of bound", если я не получаю ошибки сегментации


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

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

2 2

2 ответа:

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

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

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

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

sudo apt-get install valgrind

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