- 2.15.4 支持的语言
- 2.15.4.1 C 和 C++
- 2.15.4.2 C 和 C++ 运算符
调试器支持 C、C++ 和汇编。 无论您使用何种语言,都可以在表达式中使用某些功能:调试器 @ 和 :: 运算符,以及 {type}addr 构造(请参阅第 2.12.1 节)可以与任何受支持语言的构造一起使用。
以下部分详细说明了调试器支持每种源语言的程度。 这些部分不是语言教程或参考,而只是作为调试器表达式解析器接受什么以及不同语言的输入和输出格式应该是什么样的参考指南。 有许多关于这些语言的好书; 请参阅这些以获取语言参考或教程。
由于 C 和 C++ 密切相关,因此调试器的许多功能都适用于这两种语言。 在这种情况下,我们会一起讨论这些语言。
C++ 调试工具由 C++ 编译器和调试器共同实现。 因此,要有效地调试 C++ 代码,您必须使用受支持的 C++ 编译器(例如 GNU g ++)编译 C++ 程序。
为了在使用 GNU C++ 时获得最佳结果,请使用 DWARF 2 调试格式; 如果它在您的系统上不起作用,请尝试 stabs+ 调试格式。 您可以使用 g++ 命令行选项 -gdwarf-2 和 -gstabs+ 明确选择这些格式。 有关详细信息,请参阅 Hexagon GNU C/C++ 编译器手册。
2.15.4.2 C 和 C++ 运算符必须在特定类型的值上定义运算符。 例如,+ 是在数字上定义的,而不是在结构上定义的。 运算符通常定义在类型组上。
就 C 和 C++ 而言,以下定义成立:
■ 整型类型包括带有任何存储类说明符的 int; 字符; 枚举; 并且,对于 C++, bool 。
■ 浮点类型包括 float 、 double 和 long double (如果目标平台支持)。
■ 指针类型包括定义为 (type *) 的所有类型。
■ 标量类型包括以上所有类型。
支持以下运算符。 它们在此处按优先级递增的顺序列出:
如果在用户代码中重新定义了运算符,调试器通常会尝试调用重新定义的版本,而不是使用运算符的预定义含义。
注意: 不支持数组索引运算符 [],因为它与 Tcl 脚本语言(第 4.4 节)冲突。 使用上面显示的运算符来执行数组索引。



