Debugging GNU Smalltalk 80调试器。如何调试smallcode代码?启动调试器?
在GNU Smalltalk 80中,您可以在自己的平原上编写Smalltalk代码 个人选择的文本编辑器 因此,调试代码非常重要 首先将文件保存为txt文件。然后用“工具”从程序员文本编辑器打开文件。 这里是工具链接C/Program/GNU/GNU smalltalk/gst.exe。 代码正在运行。 不包括调试选项。 在这种情况下,编程是不可能的。 必须有“调试”选项才能激活Debugging GNU Smalltalk 80调试器。如何调试smallcode代码?启动调试器?,debugging,gnu,smalltalk,gnu-smalltalk,amber-smalltalk,Debugging,Gnu,Smalltalk,Gnu Smalltalk,Amber Smalltalk,在GNU Smalltalk 80中,您可以在自己的平原上编写Smalltalk代码 个人选择的文本编辑器 因此,调试代码非常重要 首先将文件保存为txt文件。然后用“工具”从程序员文本编辑器打开文件。 这里是工具链接C/Program/GNU/GNU smalltalk/gst.exe。 代码正在运行。 不包括调试选项。 在这种情况下,编程是不可能的。 必须有“调试”选项才能激活 我的问题是:如何包含调试选项?通常先调试smalltalk代码。不同的smalltalk针对不同的用户组。对于学习
我的问题是:如何包含调试选项?通常先调试smalltalk代码。不同的smalltalk针对不同的用户组。对于学习smalltalk来说,GNU是一个糟糕的选择。Smalltalk是一种非常简单的语言,具有非常大的库和真正集成的开发环境。您在文本编辑器中的首选项对于此阶段并不重要(您可能会发现,这一点也不重要)。与键入新代码或更改现有代码相比,您将花费更多的时间阅读和导航代码。Squeak和Pharo是两种开放源码实现,具有良好的浏览器和调试器GNU Smalltalk包括用于调试的工具。它实现了Smalltalk 80中提到的一个类:
DebugTool.st
中的语言。与调试器一起提到的其他类不一定实现,可能是因为它们与GUI操作相关
相反,GNU Smalltalk提供了用于GNU Smalltalk或IDE不可用时的命令行调试器。它或多或少是GDB的一个基本子集
加载小型调试器
一种简单的使用方法是将文件读入gst:
$ gst
GNU Smalltalk ready
st> FileStream fileIn: '/usr/share/gnu-smalltalk/examples/MiniDebugger.st'
"Global garbage collection... done"
Loading package DebugTools
FileStream
st>
请注意,MiniDebugger.st
的位置是Ubuntu 16.04的典型位置。其他操作系统可能会将文件放在不同的位置
迷你世界
小型调试器的hello world示例如下:
st> self halt
'nil error: halt encountered'
Halt(Exception)>>signal (ExcHandling.st:254)
Halt(Exception)>>signal: (ExcHandling.st:264)
UndefinedObject(Object)>>halt: (SysExcept.st:1464)
UndefinedObject(Object)>>halt (Object.st:1325)
UndefinedObject>>executeStatements (a String:1)
6 ^self activateHandler: (onDoBlock isNil and: [ self isResumable ])
(debug) c
st>
在(调试)
提示符处输入c
,表示“继续”。其他选项将通过键入h
(或任何其他无效命令)显示
制作调试映像
将MiniDebugger加载到gst REPL后,可以创建包含调试器的映像:
st> ObjectMemory snapshot: 'myDebuggerImage.im'
然后在启动gst
时重新加载(假设“myDebuggerImage.im”位于当前目录中,或者默认情况下位于另一个位置gst
中):
设置断点
然后,只要控制流遇到对象:halt
,就会出现迷你调试器。例如,如果我有文件:
"Halter.st"
Object subclass: Halter [
breakpoint [
self halt.
]
]
然后:
编写smalltalk代码主要是在调试器中完成的,因此不是在基于文件的文本编辑器中完成的。使用文本编辑器的效率要低得多,因此只有在绝对必要的情况下才能使用。你好,纳撒尼尔,让我们假设我“不关心smalltalk 80涉及到什么系统”。我只想写代码,然后用我自己的方式构造它。那怎么样?那你就永远不会说闲话了我不清楚你到底在干什么。什么站台?(Windows或Linux?)当你说用“工具”从程序员文本编辑器打开文件时,你到底在使用什么程序?您正在尝试使用第三方IDE吗?我不知道你所说的链接C/Program/GNU/GNU smalltalk/gst.exe是什么意思。很简单。
"Halter.st"
Object subclass: Halter [
breakpoint [
self halt.
]
]
st> h := Halter new
a Halter
st> h breakpoint
'a Halter error: halt encountered'
...
(debug)