是否有任何计划将标准化的回溯和其他调试实用程序添加到C ++ 14(或更高版本),还是继续成为OS或编译器添加的功能?
答案 0 :(得分:12)
没有。没有计划。
对于其中一个,标准没有规定如何进行函数调用。实际上,这取决于硬件。您可能不知道这一点,但有硬件不会将返回地址压入堆栈。其中一些使用动态jmp指令,而另一些使用返回队列来跟踪返回收件人。
您所指的堆栈跟踪可能在一个虽然很大的处理器子集上,但由于C和C ++旨在在尽可能多的处理器上运行,因此它不会,也不能定义标准方式执行反向跟踪,这将指示应如何制造硬件。
答案 1 :(得分:3)
正如丹所说,根据我的知识,没有回溯也没有计划去做。 关于调试实用程序,除了断言之外,我只知道从C继承的标准宏,比如
例如
1. #include <iostream>
2.
3. int main() {
4. std::cout << "File " << __FILE__ << ", line " << __LINE__ << std::endl;
5. }
将输出
File /path/your_bin, line 4
此处有更多详情:http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html
答案 2 :(得分:1)
通过查看标准委员会发布的文件,您可以很好地了解下一个标准的内容:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/
在那里,您可以找到由不同的人撰写的提案,会议记录,标准草案和问题清单。
鉴于C ++ 14的状态,标准草案是针对您特定问题的最具信息性的文档。简短的回答:那里没有什么新的调试。
2012年有一篇关于堆栈跟踪的论文:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3441.html
但是,它似乎没有在实际标准中留下任何痕迹。如果你想了解更多,你可以尝试阅读那里的会议记录,或者联系论文的作者 - 不是所有的东西都记录在会议中,只是每个人聚在一起的会议和投票,而不是个人的工作基团。