Debugging GNU Smalltalk 80调试器。如何调试smallcode代码?启动调试器?

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针对不同的用户组。对于学习

在GNU Smalltalk 80中,您可以在自己的平原上编写Smalltalk代码 个人选择的文本编辑器

因此,调试代码非常重要

首先将文件保存为txt文件。然后用“工具”从程序员文本编辑器打开文件。 这里是工具链接C/Program/GNU/GNU smalltalk/gst.exe。 代码正在运行。 不包括调试选项。 在这种情况下,编程是不可能的。 必须有“调试”选项才能激活


我的问题是:如何包含调试选项?通常先调试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)