Да какие проблемы? Выбираешь оптимизацию -Og (для отладки) - и
листинг вполне нормально читается, дизассемблер вполне себе
отлаживается. Неоднократно погружался при отладке порта FreeRTOS, приходилось копаться в ассемблере, в регистрах и указателях. Ставишшь оптимизацию -Os - проблема проявляется быстрее. Ставишь оптимизацию -Og - появляется возможность читать листинг. Для пограничных случаев, когда проблема не быстро проявляется с -Og, есть вариант - вставляю nop в местах, где код логически делится на части. И компилятор вынужден оставлять эти точки кода. На них и ставлю точки останова, чтобы видеть, что происходит и изолировать место поломки.