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

时间:2014-02-17 00:56:36

标签: c++ debugging standards

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

3 个答案:

答案 0 :(得分:12)

没有。没有计划。

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

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

答案 1 :(得分:3)

正如丹所说,根据我的知识,没有回溯也没有计划去做。 关于调试实用程序,除了断言之外,我只知道从C继承的标准宏,比如

  • __ FILE__知道当前输入文件的名称,
  • __ LINE__了解当前输入行号
  • __ func__了解当前的功能。

例如

    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

但是,它似乎没有在实际标准中留下任何痕迹。如果你想了解更多,你可以尝试阅读那里的会议记录,或者联系论文的作者 - 不是所有的东西都记录在会议中,只是每个人聚在一起的会议和投票,而不是个人的工作基团。