Когда вы хотите отлаживать программу, вы всегда должны собирать ее с -O0 -g3 (я полагаю, что вы используете gcc, если вы не используете компилятор, вероятно, будут поддерживать другие флаги для отключения оптимизации и включения отладочной информации).
В моей системе (x86_64 под управлением Gentoo GNU / Linux) я не могу попасть в строку 'int a = 12', когда использую какую-либо оптимизацию, большую или равную -O, так как компилятор применит мертвый код ликвидация . (Взято из здесь , это флаг -fdce в разделе -O)
Всегда имейте это в виду при отладке! Проверьте ваш код, либо разобрав его с помощью objdump -D, либо попросите компилятор показать вам сгенерированную сборку (на gcc с флагом -S)