От: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html
-fexceptions
: включить обработку исключений. Создает дополнительный код, необходимый для распространения исключений. Для некоторых целей это означает, что GCC генерирует информацию о разворачивании кадров для всех функций,
-funwind-tables
Аналогично-fexceptions
, за исключением того, что он просто генерирует любые необходимые статические данные, но никак не влияет на сгенерированный код. Обычно вам не нужно включать эту опцию; вместо этого языковой процессор, который нуждается в этой обработке, включает его от вашего имени.
Может ли кто-нибудь объяснить из -funwind-tables
, что это означает под "любыми необходимыми статическими данными". На какие данные они ссылаются. И почему данные должны быть сгенерированы? Что произойдет, если эти данные не генерируются? Где эти данные используются для?
И это также говорит "похоже на -fexception
". Так что я думаю, что он также генерирует информацию о раскручивании кадров. Что такое кадр для размотки информации? Кто использует информацию о кадре и как?
В некоторых сообщениях SO я читал, что программы должны компилироваться с этим флагом, чтобы _Unwind_Backtrace
работал должным образом. Пожалуйста, объясните, как _Unwind_Backtrace
использует информацию, генерируемую -funwind-tables
.