第四章 在 Visual LISP 中调试代码(二)监视 跟踪 检验 符号服务
监视监视,在调试环境中,就是一个在特定对象上做的记号或是一个在程序执行过程中能持续显示它的属性的符号,对一个特定变量(符号)添加监视,可以使你在分步执行中经过每个断点间的处理过程看查看分配给变量的值。要添加监视,可在编辑器窗口中选中的代码,并选择“添加监视”按钮 或按CTRL+W。此时将打开监视窗口并添加一个监视参数到监视列表中。你可按照你的期间同时监视多个符号,但请记住,添加得越多,就更难清晰找到出现的问题所在。
图4-3显示了在代码的(foreach)部分的符号“p”上放置了一个监视。通过移动断点到(foreach)部分的开始处,这样就可以在(foreach)循环过程中显示符号“p”每一次的值。
图4-3 添加对符号“p”的监视
请注意最初,P=nil,因为这时代码并不在执行中,所以也没有值被分配给“p”。当(foreach)循环开始时,P就会分别显示列表(lay col ltp lwt dia len)中每个符号的值,即使它们被设置为nil也会被显示出来。
跟踪
Visual LISP提供了几个跟踪功能。一个是命令跟踪,它在给定的命令(或所有命令)上放置了一个记号,当这个命令(或所有命令)被你的活动代码执行调用时,就会在跟踪日志窗口显示了一个通知。
如果VLISP IDE没有被激活,跟踪输出将被发送到AutoCAD命令提示窗口。不过,一旦Visual LISP (IDE)激活了,就算是在你返回到AutoCAD编辑器进程时跟踪窗口仍然保持激活。因此,一旦VLISP被激活,所有的跟踪输出都被发送到VLISP IDE的跟踪窗口。在你关闭并重新打开AutoCAD去结束VLISP的跟踪输出之前,你必须返回到VLISP IDE进程去继续查看跟踪输出。
另一种类型的跟踪是堆栈跟踪。
跟踪按钮不在调试工具栏上,而是在视图的工具栏上。这是因为跟踪特性实际上是一个窗口显示,与一个特定的代码块相关的调试命令(如添加监视和断点特性)完成不同。
显示跟踪窗口日志,你必须先选择“调试”下拉菜单并打开命令跟踪,同时检查“跟踪命令”的选中标识。完成后,任何从VLISP IDE中的代码所调用的AutoCAD命令都被发送给了跟踪日志窗口,如下所示。
图4-4 在调用CHPROP命令后的跟踪日志窗口
图4-4显示了如CHPROP这样的命令是如何发送到跟踪日志窗口的,就象图元名、命令行选项和提供给它的值等它所使用的任何参数都会发送过去。你可能注意到了,每个要素被描述成了一个单一成员列表。这是因为VLISP从本质将命令堆栈作为列表形式表现出来。
检验
检验专注于深入研究符号以查看其包含哪些属性以及它定义为何种形式。例如,检验(vla-get-activespace)函数,就会看到它被定义成SUBR,它是由Visual LISP提供的固有的或是内置的函数。它右边的数字字母串声明表示了它在当前变量空间中的存储地址。
图4-5 vla-get-activespace函数的检验窗口
符号服务
符号服务工具提供了一种检验符号属性的方法。它包括了赋值保护状态、跟踪、进入时调试状态以及它是否已经被输出到AutoCAD的变量空间去了。从这个弹出窗口你也可以选择上部的帮助按钮来执行在线帮助。以下的例子显示了亮显(vla-get-activespace)代码并选择符号服务按钮的结果。你也可以右击亮显的代码,并从弹出菜单中选择符号服务菜单。
图4-6 vla-get-activespace函数的符号服务窗口
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 明经通道的微博 老大辛苦了,过个十一也不休息! 真是造福万民啊! 自己整理一下,回去好好学习下 感动的泪牛满面。。。每次学习调试就感觉到很难,都混过去了,没有仔细看,现在才真是后悔了,原来vlisp还有这么强大的功能没有用上, 新人学习中 一有空就来学习 跟踪检验符号服务这三个看的一头雾水尝试多次都未曾达到预期效果 与文中描述大相径庭 看到这里一脸懵逼,希望有个视频教程能直观一点
页:
[1]