跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris Studio 12.3:使用 dbx 调试程序 Oracle Solaris Studio 12.3 Information Library (简体中文) |
通常,您希望使用 -g 选项来编译源文件,以使程序的可调试性更好。-g 选项会使编译器将调试信息(采用 stabs 或 Dwarf 格式)与程序的代码和数据一起记录到目标文件中。
需要调试信息时,dbx 会根据需要解析和装入每个目标文件(模块)的调试信息。可以使用 module 命令让 dbx 装入任何特定模块或所有模块的调试信息。另请参见查找源文件和目标文件。
将目标 (.o) 文件链接到一起后,链接程序可选择只将摘要信息存储到生成的装入对象中。dbx 可以在运行时使用此摘要信息从目标文件本身(而不是可执行文件)装入其余调试信息。生成的可执行文件占用的磁盘资源较小,但要求在 dbx 运行时能够使用目标文件。
使用 -xs 选项编译目标文件可覆盖此要求,从而使这些目标文件的所有调试信息在链接时都被放入可执行文件中。
如果使用目标文件创建归档库(.a 文件),并且在程序中使用归档库,则 dbx 会根据需要从归档库中提取目标文件。此时不需要原始目标文件。
将所有调试信息放入可执行文件的唯一缺点是会占用更多磁盘空间。由于运行时调试信息并未装入到进程映像中,因此程序运行速度不会降低。
使用 stabs 时的缺省行为是使编译器只将摘要信息放入可执行文件中。
DWARF 格式尚不支持目标文件装入。
注 - 记录相同的信息时,使用 DWARF 格式要比使用 stabs 格式紧凑得多。但是,由于将全部信息都复制到可执行文件中,因此 DWARF 信息所占的空间看上去要比 stabs 信息所占的空间大。
module 命令及其选项有助于在调试会话期间跟踪程序模块。可使用 module 命令读入一个模块或所有模块的调试信息。一般情况下,dbx 会根据需要自动并且延后读入模块的调试信息。
(dbx) module [-f] [-q] name
(dbx) module [-f] [-q] -a
其中:
指定所有模块。
强制读取调试信息,即使该文件比可执行文件新也是如此。
指定安静模式。
指定冗余模式,在该模式下会输出语言、文件名等信息。这是缺省值。
(dbx) module
(dbx) modules [-v] -read
要列出所有程序模块(不管它们是否包含调试信息)的名称,请键入:
(dbx) modules [-v]
(dbx) modules [-v] -debug
其中:
指定冗余模式,在该模式下会输出语言、文件名等信息。