Oracle® Solaris Studio 12.4:dbxtool 教程

退出打印视图

更新时间: 2014 年 10 月
 
 

步骤 11:通过弹出堆栈来验证诊断

有一种方法可以核实您是否确实检查完函数的 else 块,那就是在 checkThings() 上设置一个断点并运行程序。但 checkThings() 可能会被多次调用。您可以使用断点计数或受限制的断点来实现对 checkThings() 的正确调用,但重播最近所执行内容的更快方法是弹出堆栈。

  1. 选择 "Debug"(调试)-> "Stack"(堆栈)-> "Pop Topmost Call"(弹出最顶层调用)。

    请注意 "Pop Topmost Call"(弹出最顶层调用)不会撤消任何内容。尤其是,err_silent 的值已出错,因为您正从数据调试切换到控制流调试。

    进程状态恢复到包含对 checkThings() 的调用的行的开始处。

  2. 单击 "Step Into"(步入)image: 并在再次调用 checkThings() 时进行观察。

    在单步执行 checkThings() 时,您可以验证该进程是否执行了 if 块(此处 err_silent 没有递增,并且接着会递减至 -1)。

image:显示程序在 checkThings( ) 的 if 部分中停止的编辑器窗口

尽管您似乎已找到编程错误,但您可能需要反复对其进行检查。