收藏 分销(赏)

调试程序--清华CAD二次开发-LISP.pptx

上传人:天**** 文档编号:4477923 上传时间:2024-09-24 格式:PPTX 页数:72 大小:770.74KB
下载 相关 举报
调试程序--清华CAD二次开发-LISP.pptx_第1页
第1页 / 共72页
调试程序--清华CAD二次开发-LISP.pptx_第2页
第2页 / 共72页
调试程序--清华CAD二次开发-LISP.pptx_第3页
第3页 / 共72页
调试程序--清华CAD二次开发-LISP.pptx_第4页
第4页 / 共72页
调试程序--清华CAD二次开发-LISP.pptx_第5页
第5页 / 共72页
点击查看更多>>
资源描述

1、第第 6 章章 调试程序调试程序 6.1 6.1 概述概述 语语法法正正确确的的程程序序并并不不能能保保证证正正常常运运行行,在在运运行行时时可可能能会会产产生生错错误误的的结结果果或者发生崩溃现象,这就需要调试。或者发生崩溃现象,这就需要调试。调试程序的步骤是:调试程序的步骤是:控制程序在指定的位置暂停;控制程序在指定的位置暂停;查看、分析有关变量的值;查看、分析有关变量的值;修改程序的源代码;修改程序的源代码;继续或重新运行程序;继续或重新运行程序;如果程序不能正常运行,继续调试程序,直至程序正常运行。如果程序不能正常运行,继续调试程序,直至程序正常运行。为为了了便便于于调调试试程程序序,

2、Visual Visual LISPLISP提提供供了了一一些些调调试试程程序序的的工工具具,帮帮助助用用户户迅速查找并改正程序中的错误。迅速查找并改正程序中的错误。VisualLISPVisualLISP提提供供了了监监视视窗窗口口、检检验验窗窗口口、符符号号服服务务对对话话框框、中中断断和和继继续续执行程序的模式、命令跟踪、跟踪堆栈、跟踪窗口等调试程序的工具。执行程序的模式、命令跟踪、跟踪堆栈、跟踪窗口等调试程序的工具。通通过过图图6-16-1示示ViewView下下拉拉菜菜单单和和ViewView工工具具栏栏可可以以调调用用监监视视窗窗口口、检检验验窗窗口口等等调试工具。调试工具。检验窗

3、口检验窗口跟踪堆栈跟踪堆栈出错跟踪出错跟踪符号服务符号服务监视窗口监视窗口自动匹配窗口自动匹配窗口断点窗口断点窗口编译输出窗口编译输出窗口VisualLISPVisualLISP控制台控制台浏览图形数据库浏览图形数据库选择工具栏选择工具栏图图6-1 View6-1 View下拉菜单下拉菜单打打开开监监视视窗窗口口匹匹配配符符号号服服务务堆堆栈栈跟跟踪踪功功能能打打开开检检测测窗窗口口激激活活控控制制台台窗窗口口确确定定活活动动窗窗口口切切换换到到AutoCAD图图形形窗窗口口 通通过过图图6-26-2所所示示DebugDebug下下拉拉菜菜单单和和DebugDebug工工具具栏栏的的选选项项可

4、可以以设设置置程程序序暂暂停停的模式和继续程序运行的方式。的模式和继续程序运行的方式。只执行一步表达式求值。只执行一步表达式求值。执行到下一个断点,如无断点,则执行一个完整的表达式求值。执行到下一个断点,如无断点,则执行一个完整的表达式求值。执行到下一个断点,如无断点,则执行一个最外层的表达式求值。执行到下一个断点,如无断点,则执行一个最外层的表达式求值。继续执行程序继续执行程序结束当前程序。返回到控制台的上一层中断顶层读算写循环。结束当前程序。返回到控制台的上一层中断顶层读算写循环。结束所有当前活动的断点循环并返回到控制台的顶层读算写循环。结束所有当前活动的断点循环并返回到控制台的顶层读算写

5、循环。添加监视添加监视回到最近一次监视窗口的环境回到最近一次监视窗口的环境设置设置/删除断点删除断点清除所有的断点清除所有的断点回到源程序上的最近一次的断点回到源程序上的最近一次的断点跟踪命令跟踪命令立即暂停立即暂停出错断开出错断开自动运行自动运行终止求值终止求值图图6-2 Debug6-2 Debug下拉菜单下拉菜单调试指示器按钮显示上一个断点添加监视设置或取消断点切换重置为顶层退出当前层继续执行跳出表达式下一个表达式下一层嵌套表达式Debug工具栏工具栏 6.2 6.2 监视窗口监视窗口 监视窗口用于监视变量、函数在程序运行过程中的结果。选择菜单监视窗口用于监视变量、函数在程序运行过程中的

6、结果。选择菜单D DebugebugWWatch Last Evaluationatch Last Evaluation。将弹出图。将弹出图6-36-3所示的所示的监视监视窗口。窗口。图图6-3 6-3 监视窗口监视窗口 1.1.监视窗口的工具栏监视窗口的工具栏 监视窗口的工具栏有四个图像按钮,从左至右依次是:监视窗口的工具栏有四个图像按钮,从左至右依次是:添加监视:将新的变量加入到监视窗口。添加监视:将新的变量加入到监视窗口。清除变量:清除监视窗口内的所有的变量。清除变量:清除监视窗口内的所有的变量。排序:将监视窗口内的变量名按字母顺序排序。排序:将监视窗口内的变量名按字母顺序排序。复制到跟

7、踪复制到跟踪/日志:将监视窗口的内容复制到跟踪窗口。日志:将监视窗口的内容复制到跟踪窗口。如果打开了日志选项,监视窗口中的这些内容也将被复制到跟踪日志文件。如果打开了日志选项,监视窗口中的这些内容也将被复制到跟踪日志文件。2.2.监视窗口的快捷菜单监视窗口的快捷菜单 选选择择监监视视列列表表中中的的某某一一项项并并单单击击鼠鼠标标右右键键,可可显显示示图图6-46-4所所示示监监视视窗窗口口的快捷菜单。的快捷菜单。调用检验功能,查看所选值。调用检验功能,查看所选值。将所选变量的值复制到系统变量将所选变量的值复制到系统变量*obj*obj*中。中。将所选变量值加上一个单引号前缀将所选变量值加上一

8、个单引号前缀,打印到控制台窗口。,打印到控制台窗口。对所选变量调用符号服务对话框。对所选变量调用符号服务对话框。调用自动匹配选项对话框,用所选变量名作自动匹配参数。调用自动匹配选项对话框,用所选变量名作自动匹配参数。从监视窗口中删除所选变量。从监视窗口中删除所选变量。图图6-46-4监视窗口的快捷菜单监视窗口的快捷菜单 3.3.将变量加入到监视窗口将变量加入到监视窗口有三种途径可以将新的变量加入到监视窗口。有三种途径可以将新的变量加入到监视窗口。(1 1)点取工具栏上的添加监视按钮点取工具栏上的添加监视按钮 ,在随后弹出的图,在随后弹出的图6-56-5所示的所示的添加添加监视监视窗口内填入变量

9、名,然后单击窗口内填入变量名,然后单击OKOK按钮。按钮。图图6-56-5添加监视窗口添加监视窗口(2 2)亮亮显显要要添添加加的的变变量量名名,然然后后点点取取工工具具栏栏上上的的添添加加监监视视按按钮钮 ,随随后后弹弹出出的的图图6-66-6所所示示的的已已填填写写了了该该变变量量名名的的添添加加监监视视窗窗口口,然然后后单单击击OKOK按按钮。钮。(3 3)将光标移至将要添加的变量名,单击鼠标右键,在随后弹出的快捷)将光标移至将要添加的变量名,单击鼠标右键,在随后弹出的快捷菜单上选取菜单上选取Add WatchAdd Watch菜单项,将弹出已填写了该变量名的添加监视窗口,菜单项,将弹出

10、已填写了该变量名的添加监视窗口,然后单击然后单击OKOK按钮。按钮。4.4.监视变量的值监视变量的值 监监视视列列表表的的每每一一行行的的格格式式是是 变变量量名名=变变量量值值,例例如如:A A=1 1。如如果果程程序序尚尚未未运运行行,变变量量的的值值是是空空的的;随随着着程程序序的的运运行行,在在监监视视窗窗口口可可以以看看到到变变量量的的值也在不断变化。值也在不断变化。5.5.利用断点和监视窗口调试程序利用断点和监视窗口调试程序 假假定定在在编编辑辑器器窗窗口口已已键键入入了了图图6-66-6所所示示的的源源程程序序。该该程程序序的的功功能能是是根根据据用用户输入的两个对角点绘制矩形。

11、户输入的两个对角点绘制矩形。首首先先检检查查该该程程序序是是否否存存在在语语法法错错误误。选选择择菜菜单单T ToolsoolsText Text in in EditorEditor或或单单击击按按钮钮,在在Build Build OutputOutput(输输出出)窗窗口口显显示示;Check Check done.done.。说说明明该该程程序序没有语法错误。没有语法错误。选选择择菜菜单单T ToolsoolsLoad Load Text Text in in EditorEditor或或单单击击按按钮钮 ,VisualLISPVisualLISP自自动动将将控控制制切切换换到到Auto

12、CADAutoCAD界界面面。当当出出现现 输输入入矩矩形形的的一一个个角角点点:的的提提示示时时,输输入入(0,0)(0,0)点点,该该点点是是p1p1点点的的坐坐标标;当当出出现现 输输入入矩矩形形的的对对角角点点:的的提提示示时时,输输入入(100,100)(100,100)点点,该该点点是是p2p2点点的的坐坐标标。程程序序运运行行结结束束,只只得得到到了了矩矩形形的的两两条条边边,显然,这不是预期的运行结果。显然,这不是预期的运行结果。下面演示如何利用监视窗口调试程序。调试程序的步骤如下:下面演示如何利用监视窗口调试程序。调试程序的步骤如下:(1 1)确确定定要要监监视视的的变变量量

13、。选选择择菜菜单单D DebugebugA Add dd WatchWatch或或单单击击工工具具栏栏上上的的添添加加监监视视按按钮钮 ,在在随随后后弹弹出出的的添添加加监监视视窗窗口口内内填填入入变变量量名名p1p1,然然后后单单击击OKOK按钮。用同样的操作监视变量按钮。用同样的操作监视变量P2P2、P3P3、P4P4。图图6-66-6监视监视P1P1、P2P2、P3P3、P4P4点的值点的值(2 2)从从图图6-76-7所所示示监监视视窗窗口口可可以以看看到到:P1 P1=0.0 0.0 0.0 0.0 0.00.0、p2 p2=100.0 100.0 0.00.0、p3 p3=100.

14、0 100.0 100.0 100.0 0.00.0、P4 P4=nil nil 100.0100.0。说说明明P4P4点点的的X X坐坐标标是是无无定定义义的的,而而X X坐坐标标是是(car(car pl)pl)的的返返回回值值,检检查查(car(car pl)pl),carcar是是正正确确的的,亮亮显显plpl,单单击击添添加加监监视视按按钮钮 ,监监视视窗窗口口内内出出现现PL PL=nilnil,PLPL本本不不是是该该程程序序的的变变量量,是是p1p1的误写。的误写。(3 3)修修改改源源程程序序代代码码,将将plpl改改写写为为p1p1;重重新新加加载载、运运行行该该程程序;直

15、到该程序可以正常运行,调试结束。序;直到该程序可以正常运行,调试结束。6.3 6.3 在不设置断点的情况下分步调试程序在不设置断点的情况下分步调试程序 分分步步调调试试就就是是将将一一个个完完整整的的程程序序分分为为若若干干步步,逐逐步步调调试试。每每步步可可以以是是最最内内层层的的一一个个表表达达式式,也也可可以以是是一一个个复复杂杂的的表表达达式式,还还可可以以是是多多个个表表达达式式。可可以以通通过过设设置置断断点点将将程程序序分分为为若若干干段段,也也可可以以不不用用断断点点而而是是通通过过步步长长将将程程序分为若干步。序分为若干步。结合下例程序介绍几种调试程序的方法。结合下例程序介绍

16、几种调试程序的方法。【例例6-16-1】定定义义绘绘制制矩矩形形的的命命令令,矩矩形形的的一一个个角角点点、宽宽、高高和和旋旋转转角角为为交交互输入的参数。互输入的参数。程序的源代码如下:程序的源代码如下:(defun c:rectr(/w h alf p1 p2 p3 p4)(defun c:rectr(/w h alf p1 p2 p3 p4)(setq p1(getpoint (setq p1(getpoint 输入矩形的一个角点:输入矩形的一个角点:)w(getdist p1 w(getdist p1 输入矩形的宽:输入矩形的宽:)h(getdist p1 h(getdist p1 输

17、入矩形的高输入矩形的高:):)alf(getangle p1 alf(getangle p1 输入矩形的旋转角输入矩形的旋转角:):)Walfhp1p2p3p4 (setq p2(polar p1 alf w)(setq p2(polar p1 alf w)(setq p3(polar p2(+alf(*0.5 pi)h)(setq p3(polar p2(+alf(*0.5 pi)h)(setq p4(polar p3(+alf pi)w)(setq p4(polar p3(+alf pi)w)(command pline p1 p2 p3 p4 c)(command pline p1 p2

18、 p3 p4 c)(princ)(princ)1.1.从第一个表达式开始,逐步调试程序从第一个表达式开始,逐步调试程序(1 1)选选择择菜菜单单F FileileO Open pen FileFile或或单单击击按按钮钮 ,将将 例例6-16-1所所示示源源代代码码录录入入文文本本编编辑辑窗窗口口。选选择择菜菜单单D DebugebugA Add dd WatchWatch或或单单击击按按钮钮 ,监监视视变变量量w w、h h、alfalf、p1p1、p2p2、p3p3、p4p4。选选择择菜菜单单T ToolsoolsLoad Load Text Text in in E Editordito

19、r或或单单击击按按钮钮 ,加载该程序。,加载该程序。(2 2)通过菜单)通过菜单D DebugebugStop OStop On ncece,使之处于打开的状态。,使之处于打开的状态。(3 3)单单击击按按钮钮 ,切切换换到到AutoCADAutoCAD窗窗口口,在在AutoCADAutoCAD的的CommandCommand:提提示示下下,键入键入rect3rect3命令。命令。Walfhp1p2p3p4 控控制制自自动动切切换换到到VisualLISPVisualLISP文文本本编编辑辑窗窗口口,监监视视窗窗口口内内的的变变量量值值均均为为nilnil。此此时时光光标标停停在在(defun

20、(defun之之前前,整整个个程程序序被被加加亮亮显显示示。选选取取下下拉拉菜菜单单D Debugebug的的Step Step I Intonto项项、F8F8功功能能键键或或单单击击按按钮钮 ,光光标标停停在在(setq(setq p1p1之之前前,与与之之匹匹配配的的右右括括号号之之间间被被加加亮亮显显示示。单单击击按按钮钮 ,光光标标停停在在(getpoint(getpoint 输输入入矩矩形形的的一一个个角角点点:)之之前,并亮显该表达式。注意,指示按钮内的前,并亮显该表达式。注意,指示按钮内的II在在()()之前。之前。单单击击按按钮钮 ,程程序序切切换换到到AutoCADAuto

21、CAD窗窗口口,出出现现 输输入入矩矩形形的的一一个个角角点点:的的提提示示,输输入入(100,80)(100,80),程程序序切切换换到到VisualLISPVisualLISP的的文文本本编编辑辑窗窗口口。光光标标停停在在(getpoint(getpoint 输输入入矩矩形形的的一一个个角角点点:)之之后后,仍仍然然亮亮显显该该表表达达式式。注注意意,指指示示按按钮钮内内的的 I I 在在 ()之后。之后。单单击击按按钮钮 ,光光标标停停在在(getdist(getdist p1 p1 输输入入矩矩形形的的宽宽:)之之前前,并并亮亮显显该该表表达达式式。注注意意,指指示示按按钮钮内内的的I

22、I回回到到()之之前前。监监视视窗窗口口内内的的变变量量p1=100.0 p1=100.0 80.0 80.0 0.00.0。重重复复类类似似的的操操作作,在在AutoCADAutoCAD窗窗口口输输入入矩矩形形的的宽宽度度为为200200、高高度度为为150150,旋旋转转角角为为3030。在在操操作作过过程程中中指指示示按按钮钮随随时时显显示示着着光光标标相相对对于于表表达达式式的的位位置置,监监视视窗窗口口显显示示着着这这些些变变量量的的当当前前值值(注注意意,alfalf的的单单位位为为弧弧度度)。也说明单击按钮也说明单击按钮 只执行了一步表达式求值。只执行了一步表达式求值。当当光光标

23、标停停在在(setq(setq p3(polar p3(polar p2 p2(+(+alf alf(*(*0.5 0.5 pi)pi)h)h)之之前前时时,单单击击按按钮钮 ,整整个个程程序序被被加加亮亮显显示示,光光标标停停在在整整个个程程序序的的结尾,再单击以上任一按钮,程序运行结束。结尾,再单击以上任一按钮,程序运行结束。切换到切换到AutoCADAutoCAD窗口,显示着刚才绘制的矩形。窗口,显示着刚才绘制的矩形。假假定定程程序序的的第第5 5行行误误写写为为 (getangl(getangl p1 p1 输输入入矩矩形形的的旋旋转转角角:),仍仍旧旧用用上上述述的的方方法法调调试试

24、该该程程序序,当当执执行行到到 输输入入矩矩形形的的旋旋转转角角:时时,将将出出现现提提示示;error:error:no no function function definition:definition:GETANGLGETANGL(没没有有GETANGLGETANGL这这个个函函数数定定义义)。点点取取查查找找按按钮钮 ,在在随随后后弹弹出出的的 FIND FIND 对对话话框框的的FiFin ndWhatdWhat编编辑辑框框输输入入查查找找内内容容为为 GETANGLGETANGL,单击,单击 F Findind按钮,找到按钮,找到getanglgetangl并改正为并改正为get

25、anglegetangle。重新调试程序,直至程序正常运行。重新调试程序,直至程序正常运行。2.2.自动分步调试程序自动分步调试程序(1 1)自动分步调试程序的步骤)自动分步调试程序的步骤 将将例例6-16-1源源代代码码的的文文件件装装入入文文本本编编辑辑窗窗口口。监监视视变变量量w w、h h、alfalf、p1p1、p2p2、p3p3、p4p4。加载该程序。选择菜单。加载该程序。选择菜单D DebugebugAnimatAnimate e。在在AutoCADAutoCAD的的CommandCommand:提提示示下下,键键入入rect3rect3命命令令。Visua Visua lLIS

26、PlLISP自自动动切切换换到到文文本本编编辑辑窗窗口口。随随着着光光标标的的位位置置、指指示示按按钮钮 内内II和和()的的变变化化,自自动动地地执执行行每每一一个个表表达达式式的的求求值值,监监视视窗窗口口内内的的变变量量值值也也相相应应地地改改变变。如如果果遇遇到到了了错错误误的的函函数数调调用用,程程序序停停止止运运行行,并并报报告告;error:error:no no function function definition:definition:信信息息。找找到到并并改改正正错错误误的的函函数数。继继续续调调试试程程序序,直直至至程程序序正正常运行。常运行。(2 2)设置每步延迟的

27、时间)设置每步延迟的时间 选选择择菜菜单单T ToolsoolsEnvironmant Environmant O OptionsptionsG General eneral O Options ptions 弹弹出出图图6-76-7所所示示General General O Optionsptions对对话话框框。单单击击该该对对话话框框的的DiagnosticDiagnostic(诊诊断断)卡卡,在在A Animation nimation delaydelay编编辑辑框框输输入入每每步步延延迟迟的的时时间间(以以毫毫秒秒为为单单位位),单击确定按钮即可。单击确定按钮即可。图图6-76-7

28、诊断选项卡诊断选项卡 6.4 6.4 断点循环断点循环 表表达达式式是是AutoLISPAutoLISP程程序序的的基基本本单单元元,LISPLISP的的工工作作实实际际上上是是不不断断地地对对表表达达式式进进行行读读入入、求求值值和和输输出出操操作作,在在LISPLISP术术语语中中,被被称称为读算写循环。为读算写循环。如如果果不不用用调调试试工工具具而而是是正正常常地地运运行行AutoLISPAutoLISP程程序序时时,程程序序将将处处于于顶顶层层的的读读算算写写循循环环。如如果果在在VisualLISPVisualLISP控控制制台台窗窗口口内内对对表表达达式求值时,也是处于顶层的读算

29、写循环。式求值时,也是处于顶层的读算写循环。如如果果程程序序在在运运行行时时被被中中断断或或挂挂起起,VisualLISPVisualLISP将将控控制制转转交交给给控控制制台台,就就进进入入了了断断点点循循环环(Break Break looploop)。断断点点循循环环是是一一个个单单独独的的读读算算写写循循环环,它它嵌嵌套套在在原原有有的的读读算算写写循循环环内内。断断点点循循环环也也可可以以被被中中断断,这这时时将将开开始始一一个个嵌嵌套套于于该该断断点点循循环环内内的的读读算算写写循循环环。断点循环相对于顶层循环嵌套的层数称为该中断的层数。断点循环相对于顶层循环嵌套的层数称为该中断的

30、层数。进进入入断断点点循循环环时时,VisualLISPVisualLISP将将在在控控制制台台提提示示_$_$前前加加一一个个数数字字来来指指出出所所处处循循环环的的层层数数。例例如如,当当首首次次进进入入程程序序的的断断点点循循环环时时,提提示示为为_1_$_1_$。如如果果处处于于断断点点循循环环状状态,就不能将控制切换到态,就不能将控制切换到AutoCADAutoCAD窗口。窗口。从从断断点点循循环环退退出出,将将恢恢复复上上一一层层循循环环。如如果果在在该该断断点点循循环环中中修修改改了了某某变变量量的的值值,程程序序继继续续运运行行时时将将使使用用变变量修改后的值。量修改后的值。断

31、点循环分为断点循环分为可继续断点循环可继续断点循环和和不可继续断点循环不可继续断点循环。1.1.可继续的断点循环可继续的断点循环 可可继继续续的的断断点点循循环环是是指指可可以以在在程程序序中中断断处处,继继续续向向下下执执行行剩剩余的表达式。用以下方法进入可继续断点循环:余的表达式。用以下方法进入可继续断点循环:(1 1)打开)打开Stop OnceStop Once模式,碰到带调试信息的表达式时。模式,碰到带调试信息的表达式时。(2 2)遇到带)遇到带Debug on EntryDebug on Entry(进入时调试)标志的函数时。(进入时调试)标志的函数时。(3 3)遇到程序中设置的断

32、点时。)遇到程序中设置的断点时。(4 4)单击暂停按钮进入断点循环时。)单击暂停按钮进入断点循环时。(5 5)在在前前一一个个断断点点循循环环状状态态下下,执执行行Step Step IntoInto、Step Step OverOver或或Step OutStep Out时。时。如如果果程程序序在在某某函函数数中中被被中中断断,可可以以访访问问被被该该函函数数声声明明的的局局部部变量,甚至可以在控制台提示下用变量,甚至可以在控制台提示下用setqsetq函数修改它们的值。函数修改它们的值。2.2.不可继续的断点循环不可继续的断点循环 当当程程序序出出现现错错误误导导致致崩崩溃溃时时,如如果果

33、设设置置了了Break Break On On ErrorError选选项项,将将激激活活一一个个不不可可继继续续的的断断点点循循环环。此此时时可可以以访访问问出出错错环环境境中中的的所所有有变变量量,但但不不能能继继续续执执行行程程序序或或执执行行任任何何单单步步调调试试程程序序的命令。的命令。如如果果工工具具栏栏上上的的单单步步调调试试的的按按钮钮 、或或继继续续运运行行的按钮的按钮 处于可用状态,说明此时进入了可继续的断点循环。处于可用状态,说明此时进入了可继续的断点循环。处处于于不不可可继继续续的的断断点点循循环环时时,选选取取D Debugebug菜菜单单的的R Reset eset

34、 to to Top Top LevelLevel项项或或单单击击按按钮钮 ,退退出出断断点点循循环环并并跳跳转转至至控控制制台台顶顶层层循循环环;选选取取D Debugebug菜菜单单的的Q Quit uit CurrentCurrent项项或或单单击击按按钮钮 ,退退出断点循环并返回到上一层循环。出断点循环并返回到上一层循环。6.5 6.5 利用断点调试程序利用断点调试程序 运运行行的的程程序序遇遇到到断断点点时时,将将产产生生一一个个中中断断。当当程程序序中中断断时时,可可查查看看、分分析析变变量量的的值值,修修改改程程序序的的源源代代码码。利利用用断断点点可可提提高高调调试试程序的效率

35、。程序的效率。1.1.有关断点的操作有关断点的操作(1 1)在程序中设置)在程序中设置/删除断点删除断点 只只能能在在VisualLISPVisualLISP的的文文本本编编辑辑器器窗窗口口内内设设置置断断点点。断断点点应应位位于表达式的左、右括号上。设置断点的步骤如下:于表达式的左、右括号上。设置断点的步骤如下:将将光光标标移移到到需需要要程程序序暂暂停停的的位位置置。例例如如,需需要要在在某某表表达达式式 之前暂停,则应将光标移至与表达式的左括号相邻的位置。之前暂停,则应将光标移至与表达式的左括号相邻的位置。选选择择菜菜单单D DebugebugT Toggle oggle Breakpo

36、intBreakpoint、单单击击按按钮钮 或或按按F9F9键键。如如果果该该位位置置没没有有断断点点,就就加加入入一一个个断断点点,否否则则,删删除除该该断断点点。单单击击鼠鼠标标右右键键在在快快捷捷菜菜单单中中选选择择Toggle Toggle BreakpointBreakpoint项项也也可可以以设设置置或或删删除除断断点点。如如果果光光标标不不与与括括号号相相邻邻,Visual Visual LISPLISP暂暂时时将将光光标标移移到到后后面面最最近近的的右右括括号号处处,并并通通过过对对话话框框询询问问用用户户是否在该处设置断点。是否在该处设置断点。选择菜单选择菜单D Debug

37、Clear All ebugClear All B Breakpointsreakpoints项,删除已设置项,删除已设置的所有断点。的所有断点。(2 2)改变断点的颜色)改变断点的颜色 VisualLISPVisualLISP用用高高亮亮矩矩形形显显示示每每一一个个断断点点,默默认认情情况况下下,活活动动的的断断点点是是红红色色的的。选选择择菜菜单单T ToolsoolsW Window indow AttributesAttributesC Configure onfigure Current Current,通通过过随随后后弹弹出出的的Window Window AttributesAt

38、tributes对对话话框框内内的的WINDOW-TEXTWINDOW-TEXT下下拉拉列列表表的的:BPT-ACTIVE:BPT-ACTIVE项项可改变断点的颜色。可改变断点的颜色。(3 3)临时禁用断点)临时禁用断点 断点可以被临时禁用和恢复使用。禁用断点的步骤如下:断点可以被临时禁用和恢复使用。禁用断点的步骤如下:将光标置于断点处并单击鼠标右键。将光标置于断点处并单击鼠标右键。从从显显示示的的快快捷捷菜菜单单上上选选择择Breakpoints Breakpoints serviceservice项项,将将弹弹出出图图6-86-8所所示示断断点服务对话框。点服务对话框。图图6-86-8断点

39、服务对话框断点服务对话框 在在断断点点服服务务对对话话框框中中单单击击D Disableisable按按钮钮可可临临时时禁禁用用该该断断点点;若若该该断断点点已已被被禁禁用用,图图6-96-9所所示示断断点点服服务务对对话话框框将将出出现现E Enablenable按按钮钮,单单击击该该按按钮钮,所所选选断断点点将将改变为可用状态。改变为可用状态。默默认认情情况况下下,被被禁禁用用的的断断点点显显示示为为蓝蓝色色。用用设设置置断断点点颜颜色色的的方方法法也也可可以以改改变被禁用断点的颜色。变被禁用断点的颜色。(4 4)浏览和编辑程序中的断点)浏览和编辑程序中的断点 选择菜单选择菜单V View

40、BreaiewBreak kpoints Windowpoints Window将看到图将看到图6-96-9所示的断点对话框。所示的断点对话框。图图6-96-9断点对话框断点对话框 该该断断点点窗窗口口列列出出了了所所有有编编辑辑器器窗窗口口的的断断点点。其其中中有有程程序序6-1.lsp6-1.lsp的的3 3个个断断点点、6-2.lsp6-2.lsp的的2 2个个断断点点。每每项项包包含含断断点点的的源源文文件件名名以以及及断断点点在在源源文文件件中中的的位位置置,位位置置是是以以0 0开开始始的的西西文文字字符符数数量量,前前面面的的+号号表表示示该该断断点点是是活活动动的的,-号表示该

41、断点是被禁用的。号表示该断点是被禁用的。单单击击该该对对话话框框的的Delete Delete allall按按钮钮可可以以删删除除所所有有的的断断点点;亮亮显显一一项项,单单击击S Showhow按按钮钮可可显显示示该该断断点点所所在在的的源源文文件件及及其其在在源源文文件件中中的的位位置置;单单击击DeleteDelete按按钮钮可可删删除除该该断断点点;单单击击E Editdit按按钮钮可可打打开开图图6-96-9所所示示的的断断点点服服务务对对话话框框,利利用用该对话框可以改变断点可用或禁用的状态。该对话框可以改变断点可用或禁用的状态。(5 5)断点的生命周期断点的生命周期 可可以以在

42、在加加载载程程序序之之前前或或之之后后设设置置断断点点。如如果果在在加加载载程程序序之之后后设设置置断断点点,该断点只有在重新加载程序之后才有效。该断点只有在重新加载程序之后才有效。2.2.在断点处继续运行程序在断点处继续运行程序 运运行行的的程程序序遇遇到到断断点点时时,将将产产生生一一个个中中断断,即即断断点点循循环环。单单击击分分布布调调试试按按钮钮 、和和 可可继继续续运运行行程程序序。如如果果在在复复杂杂的的表表达达式式之之内内还还有有一一些些断断点点,单单击击按按钮钮 和和 ,首首先先在在断断点点处处暂暂停停。此此外外还还有有以以下下控控制制程程序序继继续续运运行行的的工工具具栏栏

43、按按钮钮、快快捷捷键键或或D Debugebug菜单的菜单项。菜单的菜单项。ContinueContinue或或CtrlCtrl+F8F8:继继续续执执行行程程序序直直至至遇遇到到下下一一个个断断点点(如果有)或程序结束。(如果有)或程序结束。Quit Quit CurrentCurrent或或CtrlCtrl+Q Q:结结束束当当前前程程序序,返返回回到到控控制制台台的的上一层断点循环。上一层断点循环。Reset Reset to to Top Top LevelLevel或或CtrlCtrl+R R:结结束束当当前前程程序序,结结束束所所有有的断点循环。的断点循环。3.3.利用断点调试程序

44、实例利用断点调试程序实例【例例6-26-2】定定义义绘绘制制图图6-106-10所所示示图图形形的的命命令令,p0p0、d d、b b、t1t1、alfalf是是交交互互输输入的参数。入的参数。图图6-106-10轴的键槽部位截面轴的键槽部位截面 程序源代码如下:程序源代码如下:(defun c:tuxing(/p0 alf d b t1 r l b1 sit p1 p2 p3 p4 p5)(defun c:tuxing(/p0 alf d b t1 r l b1 sit p1 p2 p3 p4 p5)(setq p0 (getpoint nEnter P0:)(setq p0 (getpoi

45、nt nEnter P0:)(setq d (getdist p0 nEnter d:)(setq d (getdist p0 nEnter d:)(setq b (getdist p0 nEnter b:)(setq b (getdist p0 nEnter b:)(setq b (getdist p0 nEnter b:)(setq b (getdist p0 nEnter b:)(setq tl (getdist p0 nEnter t1:)(setq tl (getdist p0 nEnter t1:)(setq tl (getdist p0 nEnter t1:)(setq tl (

46、getdist p0 nEnter t1:);tl;tl;tl;tl应改为应改为应改为应改为t1t1t1t1 (setq alf(getangle p0 nEnter alf:)(setq alf(getangle p0 nEnter alf:)(setq alf(getangle p0 nEnter alf:)(setq alf(getangle p0 nEnter alf:);断点;断点;断点;断点1 11 1的位置的位置的位置的位置 (setq r(*0.5 d)bl(*0.5 b)(setq r(*0.5 d)bl(*0.5 b)(setq r(*0.5 d)bl(*0.5 b)(se

47、tq r(*0.5 d)bl(*0.5 b)(setq l(sqrt(-(*r r)(*b1 b1)(setq l(sqrt(-(*r r)(*b1 b1)(setq l(sqrt(-(*r r)(*b1 b1)(setq l(sqrt(-(*r r)(*b1 b1)(setq sit(tan b1 l)(setq sit(tan b1 l)(setq sit(tan b1 l)(setq sit(tan b1 l);tan;tan;tan;tan应改为应改为应改为应改为atanatanatanatan (setq p1(polar p0(+alf sit)r)(setq p1(polar p

48、0(+alf sit)r)(setq p1(polar p0(+alf sit)r)(setq p1(polar p0(+alf sit)r)(setq p2(polar p0(+pi alf)r)(setq p2(polar p0(+pi alf)r)(setq p2(polar p0(+pi alf)r)(setq p2(polar p0(+pi alf)r)(setq p3(polar p0(-alf sit)r)(setq p3(polar p0(-alf sit)r)(setq p3(polar p0(-alf sit)r)(setq p3(polar p0(-alf sit)r)(

49、setq p4(polar p3(+pi alf)(-(+r l)t1)(setq p4(polar p3(+pi alf)(-(+r l)t1)(setq p4(polar p3(+pi alf)(-(+r l)t1)(setq p4(polar p3(+pi alf)(-(+r l)t1)(setq p5(polar p1(+alf pi)(-(+r l)t1)(setq p5(polar p1(+alf pi)(-(+r l)t1)(setq p5(polar p1(+alf pi)(-(+r l)t1)(setq p5(polar p1(+alf pi)(-(+r l)t1)(comm

50、and pline p1 a s p2 p3 l p4 p5 c)(command pline p1 a s p2 p3 l p4 p5 c)(command pline p1 a s p2 p3 l p4 p5 c)(command pline p1 a s p2 p3 l p4 p5 c)选选择择菜菜单单F FileileO Open pen FileFile将将例例6-26-2所所示示源源代代码码的的文文件件装装入入文文本本编编辑辑窗窗口口。选选择择菜菜单单D DebugebugA Add dd WatchWatch或或单单击击按按钮钮 ,监监视视变变量量p0p0、d d、b b、t1t

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服