调试程序--清华CAD二次开发-LISP.pptx
《调试程序--清华CAD二次开发-LISP.pptx》由会员分享,可在线阅读,更多相关《调试程序--清华CAD二次开发-LISP.pptx(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 调试 程序 清华 CAD 二次开发 LISP
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。