使用编译器和链接程序选项,用户可更自由地生成和使用调试信息。编译器为 DWARF 生成索引,这与索引 stabs 类似。该索引始终存在,并可在使用 DWARF 进行调试时加快 dbx 启动速度并带来其他改进。
下图显示了不同类型的调试信息及其位置,特别突出显示了调试数据所在的位置:
图 4-1 调试信息流
缺省情况下,DWARF 已装入可执行文件。新索引可使用 –xs=no 选项将 DWARF 保留在对象文件中。这样可生成更小的可执行文件和更快的链接。对象文件必须保留,以便进行调试。这与 stabs 的工作原理类似。
Oracle Solaris 11.1 链接程序可以将调试信息发送到单独的辅助文件,同时生成可执行文件。在必须移动、安装或归档所有调试信息的环境中,独立的调试文件非常有用。可执行文件既可独立运行,也可由用户使用其独立的调试文件副本进行调试。
dbx 继续支持使用 GNU 实用程序 objcopy 将调试信息提取到独立的文件中,但与 objcopy 相比,使用 Oracle Solaris 链接程序具有以下优点:
独立的调试文件作为链接的副产物生成
由于过大而难以作为一个文件链接的程序可作为两个文件链接为两个文件
有关更多信息,请参见辅助文件(仅限 Oracle Solaris)。
–g1 编译器选项旨在实现已部署应用程序的最小可调试性。使用此选项编译应用程序时,将生成文件、行号以及系统认为对事后调试至关重要的简单参数信息。有关更多信息,请参见编译器手册页和编译器用户指南。