Я не понимаю, как раскручивание стека в dwarf2 обеспечивает надежное восстановление аргументов в некоторых очень простых сценариях ABI (двоичный интерфейс приложения). Рассмотрим ABI, в котором говорится, что первые три аргумента должны находиться в регистрах и располагаться в стеке. Насколько я понимаю, механизм раскручивания стека dwarf2 гарантирует, что при правильном заполнении таблицы CFI можно получить значения регистров в точке вызова текущего кадра. Это, однако, не позволяет вам перейти к прологу вызывающей стороны и узнать, каково было содержимое регистров аргументов. Итак, я думаю, должен был быть способ найти значения регистров даже в одном и том же кадре в разных точках (таблица, закодированная в разделе .debug_frame, дает только местоположения в предыдущем кадре).
Что-то не так в моем понимании? Как в таких случаях работают отладчики, основанные на форматах отладки dwarf2? Для архитектур, в которых аргументы передаются в стеке, не будет проблем с восстановлением значений во всех точках программы (для любого кадра).