У меня есть программа, которая вызывает ошибку сегмента в машине, которая мне недоступна. Однако, когда я компилирую и запускаю его с тем же компилятором и тем же вводом на моей машине, я ничего не получаю. Проблема, вероятно, заключается в том, что «индекс массива вышел за пределы», что может в некоторых случаях привести к сбою сегмента, однако компилятор не выдает никакого предупреждения. Программа огромна и сложна. Поэтому я не могу найти проблему, просто проверив код.
Любое предложение о том, как получить ошибку сегментации на моей машине тоже? Таким образом, я могу отладить код и найти проблему.
Вы могли бы использовать valgrind
если он работает на машине Linux.
Использовать valgrind
вы просто печатаете на консоли:
valgrind --leak-check=full --num-callers=20 --tool=memcheck ./program
и должен вернуть недопустимое чтение / запись размера X в соответствии с переменной и (если вы скомпилировали с отладочной информацией), он сообщит вам строку, где может быть проблема.
Кстати, вы можете установить valgrind
в Ubuntu / Debian Linux (например) так же просто, как:
sudo apt-get install valgrind
Вы можете попробовать такое решение, как Valgrind, как упоминалось в других постерах, или ваш компилятор может также иметь какую-то особую возможность вставлять защитные слова до того, как я обнаружу повышение для обнаружения такого типа доступа.