跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris Studio 12.3:使用 dbx 调试程序 Oracle Solaris Studio 12.3 Information Library (简体中文) |
当程序停止时,您可以导航到程序中其他地方的代码。可导航到任何函数或文件,只要它们是程序的一部分。导航会设置当前作用域(请参见程序作用域)。这对于确定要在何时以及在哪一源代码行设置 stop at 断点非常有用。
可以导航到 dbx 将其识别为程序一部分的任何文件(即使模块或文件未使用 -g 选项进行编译也是如此)。要导航到文件:
(dbx) file filename
使用不带参数的 file 命令将回显当前导航的文件的文件名。
(dbx) file
如果不指定行号,dbx 会从文件的第一行开始显示文件。
(dbx) file filename ; list line_number
有关在源代码行中设置 "stop at" 断点的信息,请参见在源代码行设置 stop 断点。
可以使用 func 命令导航到函数。要导航到函数,请键入命令 func,后跟函数名。例如:
(dbx) func adjust_speed
func 命令本身会回显当前函数。
有关更多信息,请参见func 命令
如果尝试导航到具有二义名称或重载函数名称的 C++ 成员函数,则会显示一个列表,其中列出了所有具有重载名称的函数。键入要导航的函数的号码。如果您知道函数所属的具体类,则可以键入类名和函数名。例如:
(dbx) func block::block
如果可从同一作用域级别访问多个符号,则 dbx 会输出一条报告二义性的消息。
(dbx) func main (dbx) which C::foo More than one identifier ’foo’. Select one of the following: 0) Cancel 1) ”a.out”t.cc”C::foo(int) 2) ”a.out”t.cc”C::foo() >1 ”a.out”t.cc”C::foo(int)
在 which 命令的上下文中,从具体值列表中进行选择不会影响 dbx 或程序的状态。无论选择哪个具体值,dbx 都会回显名称。
可使用 list 命令输出文件或函数的源码列表。在文件中导航后,list 会从第一行开始输出 number 行。在函数中导航后,list 会打印其代码行。
有关 list 命令的详细信息,请参见list 命令。
如果存在活动进程,另一种导航到代码的方法是“在调用堆栈中移动”,即执行堆栈命令查看调用堆栈中当前存在的函数,这些函数代表当前处于活动状态的所有例程。在堆栈中移动会使当前函数和文件在您每次显示堆栈函数时发生变化。停止位置被视为位于堆栈的“底部”,因此,要离开该位置,请使用 up 命令,即向 main 或 begin 函数方向移动。使用 down 命令可向当前帧方向移动。
有关在调用堆栈中移动的更多信息,请参见堆栈中移动和返回起始位置。