对于标准化的回溯和其他调试工具,C++ 14或更高版本是否有任何计划?

Duc*_*een 16 c++ debugging standards

是否有任何计划将标准化的回溯和其他调试实用程序添加到C++ 14(或更高版本),还是继续成为OS或编译器添加的功能?

Dan*_*Dan 12

不,没有计划.

例如,标准没有规定如何进行函数调用.实际上,这取决于硬件.您可能不知道这一点,但有硬件不会将返回地址压入堆栈.其中一些使用动态jmp指令,而另一些使用返回队列来跟踪返回收件人.

您所指的堆栈跟踪可能在一个虽然很大的处理器子集上,但由于C和C++旨在在尽可能多的处理器上运行,因此它不会,也不能定义执行a的标准方法回溯将决定如何制造硬件.

  • 当函数内联和优化时,通常无法重建调用堆栈......至少不会存储重要的附加数据,并限制优化的实现.这将为一个功能带来显着的运行时间成本,而这似乎很少有人需要,并且无论如何都可以以平台相关的方式获得. (3认同)
  • 逻辑有些错误.标准指定的"堆栈回溯"不需要假设物理堆栈.您的"返回队列"可以使用相同的机制转换为调用函数列表.这实际上更容易,因为返回地址队列的全部内容是函数内的地址.x86堆栈包含这些返回地址,但也包含随机的其他数据,因此在每个堆栈帧中定位返回地址并非易事. (2认同)