Next: , Up: Debugging Info


17.22.1 影响所有调试格式的宏

这些宏影响所有的调试格式。

— Macro: DBX_REGISTER_NUMBER (regno)

一个C表达式,返回编译器寄存器号regno的DBX寄存器号。 在提供的缺省宏中,该表达式的值将为regno本身。 但是有时候,有些寄存器编译器知道但是DBX不知道,或者相反。 对于这种情况,寄存器可能需要在编译器中具有一个编号, 而在DBX中具有另一个。

如果两个寄存器在GCC中具有连续的编号, 并且可以作为一对用来保存多字的值, 则它们在使用DBX_REGISTER_NUMBER重新编号之后 必须还具有连续的编号。 否则,调试器将无法访问这样的寄存器对, 因为调试器期望寄存器对在自己的编号方案下也是连续的。

如果你发现自己定义的DBX_REGISTER_NUMBER不能保持寄存器对, 则必须重定义实际的寄存器编号方案。

— Macro: DEBUGGER_AUTO_OFFSET (x)

一个C表达式,返回具有地址x(RTL表达式)的自动变量的整数偏移量。 缺省计算是假设x基于帧指针的,并会给出相对帧指针的偏移量。 这对于产生DBX调试输出或COFF风格的SDB调试输出, 并且在使用-g选项时也允许消除帧指针的目标,会有需要。

— Macro: DEBUGGER_ARG_OFFSET (offset, x)

一个C表达式,返回具有地址x(RTL表达式)的参数的整数偏移量。 名义上的偏移量为offset

— Macro: PREFERRED_DEBUGGING_TYPE

一个C表达式,返回当用户只指定-g时, GCC应该产生的调试输出类型。 如果你已经使得GCC支持多种调试输出格式的时候,则定义该宏。 目前,允许的值为DBX_DEBUG, SDB_DEBUG, DWARF_DEBUG, DWARF2_DEBUG, XCOFF_DEBUG, VMS_DEBUGVMS_AND_DWARF2_DEBUG

当用户指定-ggdb时,GCC通常还使用该宏的值来选择调试输出格式, 但是有两个例外。如果定义了DWARF2_DEBUGGING_INFO, 则GCC使用值DWARF2_DEBUG,如果定义了DBX_DEBUGGING_INFO, 则GCC使用DBX_DEBUG

该宏的值只影响缺省调试输出;用户总是可以通过使用-gstabs, -gcoff, -gdwarf-2, -gxcoff-gvms来获得指定类型的输出。