在使用断点和步进中,您发现了一个错误,一个空行产生了一个 NULL 首标记并导致一个 SEGV。您可以使用某种解决方法来避免该错误。
删除您先前创建的所有断点。您可以通过在 "Breakpoints"(断点)窗口中右键单击并选择 "Delete All"(全部删除)快速执行此操作。
在 "Debug Executable"(调试可执行文件)对话框中删除 <in 参数。
在 interp.cc 中第 130 行处开启/关闭一个行断点。
在 "Breakpoints"(断点)窗口中,右键单击刚刚创建的断点,然后选择 "Customize"(定制)。
在 "Customize Breakpoint"(定制断点)对话框中,在 "Condition"(条件)字段中键入 token == 0。
从 "Action"(操作)下拉式列表中选择 "Run Script"(运行脚本)。
在 "Script"(脚本)字段中,键入 assign token = line。
该对话框看起来应如以下屏幕所示:
单击 "OK"(确定)。
现在,如果您运行程序并输入一个空行,该程序会向您发出警告,而不是崩溃,如以下屏幕中所示:
如果您查看 dbxtool 发送给 dbx 的命令,可以更加清楚地了解该解决方法。
when at "interp.cc":130 -if token == 0 { assign token = line; }