Oracle® Developer Studio 12.5: dbxtool 教程

退出打印视图

更新时间: 2016 年 6 月
 
 

使用断点脚本修补代码

使用断点和步进中,您发现了一个错误,一个空行产生了一个 NULL 首标记并导致一个 SEGV。您可以使用某种解决方法来避免该错误。

  1. 删除您先前创建的所有断点。您可以通过在 "Breakpoints"(断点)窗口中右键单击并选择 "Delete All"(全部删除)快速执行此操作。

  2. 在 "Debug Executable"(调试可执行文件)对话框中删除 <in 参数。

  3. interp.cc 中第 130 行处开启/关闭一个行断点。

    image:在第 130 行上包含断点的编辑器窗口
  4. 在 "Breakpoints"(断点)窗口中,右键单击刚刚创建的断点,然后选择 "Customize"(定制)。

  5. 在 "Customize Breakpoint"(定制断点)对话框中,在 "Condition"(条件)字段中键入 token == 0

  6. 从 "Action"(操作)下拉式列表中选择 "Run Script"(运行脚本)。

  7. 在 "Script"(脚本)字段中,键入 assign token = line


    注 -  您无法执行 assign token = “dummy”,因为 dbx 无法在调试的进程中分配 dummy 字符串。另一方面,已知 line 等于 ""

    该对话框看起来应如以下屏幕所示:

    image:“Custom Breakpoint“(定制断点)对话框
  8. 单击 "OK"(确定)。

现在,如果您运行程序并输入一个空行,该程序会向您发出警告,而不是崩溃,如以下屏幕中所示:

image:“Output“(输出)窗口

如果您查看 dbxtool 发送给 dbx 的命令,可以更加清楚地了解该解决方法。

when at "interp.cc":130 -if token == 0 { assign token = line; }