gcc - -fomit-frame-pointer gcc 选项如何使调试变得不可能?
问题描述
GCC 在线文档 - 3.10 控制优化的选项确认-fomit-frame-pointer gcc 选项可以使调试变得不可能。
-fomit-frame-pointer
不要将帧指针保存在不需要的函数的寄存器中。这避免了保存、设置和恢复帧指针的指令;它还为许多功能提供了额外的寄存器。它还使某些机器上的调试变得不可能。
我理解为什么在没有帧指针帮助的情况下,局部变量更难定位,而堆栈跟踪更难重建。
但是,在什么情况下无法调试?
解决方案
从某种意义上说,这些平台的现有工具(通常由平台供应商提供,而不是 GNU)期望帧指针存在以成功展开可能是不可能的。理论上可以将它们修改为更智能,但实际上这是不可能的。
推荐阅读
- c# - 将 WebReponse 映射到模型类
- asp.net-mvc - 更新 EntityFramework 中的模型类名称
- java - 如何将 Spring Boot Web 服务引发的异常映射到复杂的故障信息?
- dialogflow-es - Google 助理上的 MalformedResponse 错误
- c# - 为什么 ObservableCollection 在 Android 上更新 UI 而不是 iOS?[待定]
- javascript - 谷歌云功能 | 每次为实时数据库触发另一个带有 onCreate 的函数时,都会调用带有触发器 onUpdate 的函数
- pentaho - 循环 Pentaho,我在每次执行时重新定义一个变量
- javascript - 如何使用 for 循环显示数组的所有元素(仅由字符串组成)?
- python - MQRNN(Seq2Seq LSTM + MLP)模型给出恒定预测
- javascript - 使用可选的第一个参数表达包罗万象的路线