Oracle® Developer Studio 12.5:使用 dbx 调试程序

退出打印视图

更新时间: 2016 年 6 月
 
 

保存和恢复调试运行

    dbx 提供了三个命令,用于保存全部或部分调试运行并在稍后进行重放:

  • save [-number] [filename]

  • restore [filename]

  • replay [-number]

使用 save 命令

save 命令将自上一 run 命令、rerun 命令或 debug 命令开始直到 save 命令期间所发出的所有调试命令保存到文件中。调试会话中的此段称为调试运行

除了已发出的调试命令列表外,save 命令还保存运行开始时与程序状态相关联的调试信息,如断点、显示列表等等。当恢复已保存的运行时,dbx 将使用保存文件中的信息。

可以保存调试运行的一部分,即,整个运行从最后输入命令开始减去指定数目的命令。

image:图中显示了使用 save 命令保存完整运行以及使用 save -2 命令保存减去最后两步后的运行情况

如果不能确定要在何处结束正在保存的运行,可以使用 history 命令查看自会话开始以来发出的调试命令列表。


注 -  缺省情况下,save 命令将信息写入特定的特殊文件。如果要将调试运行保存到稍后可以恢复的文件,可使用 save 命令来指定文件名。请参见将系列调试运行另存为检查点

在要保存整个调试的点处发出 save 命令。

(dbx) save

要保存部分调试运行,请提供 number 选项,其中 number 是在 save 命令之前所不想保存的命令的个数。

(dbx) save -number

将系列调试运行另存为检查点

如果保存调试运行时没有指定文件名,dbx 将信息写入特定的特殊文件。每次保存时,dbx 都会覆盖此文件。但是,通过为 save 命令指定 filename 参数,可以将调试运行保存到文件中,这样,即使保存到 filename 之后又保存了其他调试运行,这个文件稍后也可以恢复。

保存一系列运行可为您提供一组检查点,从会话中较早的时间开始依次排列每个检查点。您可以恢复这些已保存运行中的任意一个运行,继续,然后将 dbx 重置到早期运行中所保存的程序位置和状态。

要将调试运行保存到非缺省文件,请提供文件名:

(dbx) save filename

恢复已保存的运行

保存运行后,可使用 restore 命令恢复该运行。dbx 使用保存文件中的信息。恢复运行时,dbx 首先将内部状态重置到运行开始时的状态,然后重新发出所保存的运行中的每个调试命令。


注 -  source 命令还会重新发出存储在文件中的一组命令,但是不会重置 dbx 的状态。它只会从当前的程序位置重新发出命令列表。

要精确恢复已保存的调试运行,运行的所有输入必须完全相同: run 类型命令的参数、手动输入和文件输入。


注 -  如果在执行 restore 之前保存段,然后发出 runrerundebug 命令,restore 将使用第二个保存后 runrerundebug 命令的参数。如果这些参数不同,则不能进行精确恢复。

恢复已保存的调试运行

(dbx) restore

要恢复已保存到其他文件而不是缺省文件的调试运行:

(dbx) restore filename

使用 replay 保存和恢复

replay 命令是一个组合命令,相当于在 save -1 命令后立即发出一个 restore 命令。replay 命令带有负的 number 参数,此参数将传递给命令的 save 部分。缺省情况下,-number 的值为 -1,因此 replay 相当于撤消命令,可以恢复直到(但不包括)最后发出的命令为止的最后一个运行。

要重放当前的调试运行,但不包括最后发出的调试命令,请键入:

(dbx) replay

要重放当前调试运行并在特定命令前停止该运行,请使用 –number 选项,其中 number 是最后一个调试命令之前的命令个数。

(dbx) replay -number