Что сказал DeadMG, плюс:
Недопустимые инструкции, как правило, являются результатами двоичных файлов, скомпилированных с использованием инструкций ЦП, недоступных на работающей машине. Это может произойти, например, если вы компилируете как
g++ -msse4 ...
и затем запустите устройство на процессоре Intel Atom, который не поддерживает набор инструкций SSE4. Авария не обязательно происходит, например, маловероятно, что
int main () {}
, пока генерируются инструкции SSE4. То же самое, конечно, для непробиваемых путей кода, которые могут не вызвать сбоев сейчас, но в будущем.
Чтобы найти код разрушения стека, вы можете рассмотреть LINT, такой как cppcheck или аналогичный , Valgrind , старый добрый способ отладки printf / cout в режиме «разделяй и властвуй», или используя проверено выполнение STL.