簡體   English   中英

GNU Smalltalk 80調試器。 如何調試小碼代碼? 啟動調試器?

[英]GNU Smalltalk 80 Debugger. How to debug smallcode code ? Start Debugger?

在GNU Smalltalk 80中,可以在您自己選擇的純文本編輯器中編寫smalltalk代碼。

因此,調試代碼非常重要。

首先將文件保存為txt文件。 然后使用“工具”從程序員文本編輯器中打開該文件。 這里的工具 - 鏈接C / program / GNU / gnu smalltalk / gst.exe。 代碼正在運行。 調試選項不包括在內。 在這些情況下,編程是不可能的。 必須有一個“調試”選項才能激活。

我的問題是:如何包含調試選項? 通常,首先調試smalltalk代碼。

GNU Smalltalk包含用於調試的工具。 它實現了Smalltalk 80中提到的Debugger DebugTool.st 的語言 Debugger旁邊提到的其他類不一定是實現的,可能是因為它們與GUI操作有關。

相反,GNU Smalltalk提供了與GNU Smalltalk一起使用的MiniDebug命令行調試器,或者當IDE不可用時。 它或多或少是GDB的基本子集。

正在加載MiniDebugger

一個簡單的使用方法是將文件讀入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的典型位置。 其他操作系統可能會將文件放在不同的位置。

MiniDebugger Hello World

MiniDebugger的一個問候世界的例子是:

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>

(debug)提示符處輸入c表示“繼續”。 鍵入h (或任何其他無效命令)將顯示其他選項。

制作調試圖像

將MiniDebugger加載到gst REPL后,可以創建包含調試器的圖像:

st> ObjectMemory snapshot: 'myDebuggerImage.im'

然后在啟動gst時重新加載(這假設'myDebuggerImage.im'位於當前目錄中或默認情況下gst看起來在另一個地方):

$ gst -I myDebuggerImage.im 

設置斷點

每當控制流遇到Object:halt時,MiniDebugger就會出現Object:halt 例如,如果我有文件:

"Halter.st"
Object subclass: Halter [
  breakpoint [
    self halt.
  ]
]

然后:

st> h := Halter new
a Halter
st> h breakpoint
'a Halter error: halt encountered'
...
(debug)

不同的小方塊針對不同的用戶組。 對於學習smalltalk,GNU是一個糟糕的選擇。 Smalltalk是一種非常簡單的語言,具有非常大的庫和真正集成的開發環境。 您在文本編輯器中的偏好對於此階段並不重要(正如您可能發現的那樣,也不是任何其他階段)。 與輸入新代碼或更改現有代碼相比,您將花費更多時間閱讀和導航代碼。 Squeak和Pharo是兩個開源實現,具有不錯的瀏覽器和調試器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM