当您发出包含表达式的调试命令时,将按以下顺序查找表达式中的符号。dbx 会按编译器在当前访问作用域中进行操作的同样方式解析这些符号。
在使用当前访问作用域的当前函数的作用域内,如果程序在嵌套块中停止,则 dbx 会在该块内搜索,然后在所有封装块的作用域中搜索。
仅限于 C++: 当前函数的类及其基类的类成员。
仅限于 C++: 当前名字空间。
当前函数的参数。
立即封装模块,通常为包含当前函数的文件。
供此共享库或可执行文件专用的符号。可使用链接程序作用域来创建这些符号。
主程序的全局符号,然后为共享库的全局符号。
如果上述搜索都不成功,则 dbx 会假定您正在引用其他文件中的专用或文件静态变量或函数。dbx 可选择根据 dbxenv 设置 scope_look_aside 的值在每个编译单元中搜索文件静态符号。
无论 dbx 使用符号的哪个具体值,它都会先沿此搜索路径查找。如果 dbx 找不到符号,它会报告错误。