Oracle® Solaris Studio 12.4:使用 dbx 调试程序

退出打印视图

更新时间: 2015 年 1 月
 
 

查找源文件和对象文件

dbx 必须知道与程序关联的源代码文件的位置。源文件的缺省目录是上次编译时它们所在的目录。如果移动源文件或将源文件复制到新位置,必须重新链接程序并在调试前更改为新位置,或者使用 pathmap 命令。

如果采用 Sun Studio 11 及早期发行版中 dbx 所用的 stabs 格式,dbx 中的调试信息有时会使用对象文件来载入其他调试信息。当 dbx 显示源代码时,会使用源文件。

包括源文件路径在内的符号信息包含在可执行文件中。当 dbx 需要显示源代码行时,将根据查找源文件的需要读取适量的符号信息,并读取和显示源文件中的代码行。

符号信息包括源文件的全路径名,但是当键入 dbx 命令时,通常只使用文件的基名。例如:

stop at test.cc:34

dbx 将在符号信息中搜索匹配的文件。

如果源文件已经删除,dbx 将无法显示这些文件中的源代码行,但您可以显示堆栈跟踪,输出变量值,甚至还可以确定现在所处的源代码行。

如果在编译和链接程序后移动了源文件,可将其新位置添加到搜索路径中。pathmap 命令可创建从文件系统的当前视图到可执行映像中的名称的映射。 该映射应用于源路径和对象文件路径。

要建立从目录 from 到目录 to 的新映射:

(dbx) pathmap [-c] from to

如果使用 -c,该映射还将应用于当前工作目录。

pathmap 命令还可用于处理在不同主机上具有不同基路径的自动挂载或显式 NFS 挂载的文件系统。因为当前工作目录在自动挂载的文件系统中不准确,所以在尝试解决由自动挂载程序引起的问题时,请使用 -c

缺省情况下,存在 /tmp_mnt/ 的映射。