Sun Studio 12 Update 1:使用 dbx 调试程序

断点事件规范

断点是操作的发生位置,程序在该位置停止执行。下面是断点事件的事件规范。

in function

已进入函数,并且即将执行第一行。序进程后的第一个可执行代码用作实际断点位置。它可能是要初始化的局部变量所在的那一行。如果是 C++ 构造函数,在执行了所有基类构造函数后,将停止执行。如果使用 -instr 修饰符(请参见-instr),则它是即将执行的函数的第一个指令。function 规范可以接受形式参数签名,以支持重载的函数名或模板实例规范。例如:


 stop in mumble(int, float, struct Node *)

注 –

不要将 in function-in function 修饰符混淆。


at [filename: ]line_number

指定行即将被执行。如果指定 filename,则即将执行指定文件中的指定行。文件名可以是源文件名或目标文件名。尽管不要求使用引号,但文件名中包含特殊字符时需要使用。如果指定行在模板代码中,则会在该模板的所有实例上放置断点。

at address_expression

给定地址处的指令即将被执行。此事件只能与 stopi 命令(请参见stopi 命令)或 -instr 事件修饰符(请参见-instr)结合使用。

infile filename

该事件在文件中定义的每个函数中放置断点。stop infile 命令循环访问与 funcs -f filename 命令相同的函数列表。

.h 文件中的方法定义、模板文件或 .h 文件中的纯 C 代码(如 regexp 命令使用的那种)可能会为文件提供函数定义,但这些定义会被排除。

如果指定的文件名是目标文件的名称(即,该文件名以 .o 结尾),则会在出现在该目标文件中的每个函数上放置断点。

stop infile list.h 命令不会在 list.h 文件中定义的所有方法实例中放置断点。请使用诸如 inclassinmethod 之类的事件来执行此操作。

fix 命令可以删除文件中的函数或向文件中添加函数。stop infile 命令可在文件中的所有旧版本函数中,以及未来可能添加的任何函数中放置断点。

不会在 Fortran 文件的嵌套函数或子例程中放置断点。

您可以使用 clear 命令禁用 infile 事件创建的集合中的单个断点。

infunction function

对于所有名为 function 的重载函数或其所有模板实例,等效于 in function

inmember function inmethod function

对于每个类,等效于 in function 或名为 function 的成员函数。

inclass classname [-recurse | -norecurse]

对于所有是 classname 的成员但不是 classname 的任何基类的成员函数,等效于 in function-norecurse 是缺省值。如果指定 -recurse,则包括基类。

inobject object-expression [-recurse | -norecurse]

调用了对由 object-expression 表示的地址处的特定对象调用的成员函数。stop inobject ox 大致等效于以下命令,但与 inclass 不同,此处,包括了动态类型的 ox 的基类。缺省值是 -recurse。如果指定 -norecurse,则不包括基类。


stop inclass dynamic_type(ox) -if this==ox