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

2024-03-05

在 GNU Smalltalk 80 中,可以用您自己的普通代码编写 Smalltalk 代码 个人选择的文本编辑器。

因此,调试代码非常重要。

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

我的问题是:如何包含该调试选项?通常先调试smalltalk 代码。


GNU Smalltalk 包含调试工具。它实现了一个Debugger https://github.com/gnu-smalltalk/smalltalk/blob/a5d7f1ad32fe77ef89406be82b7296899b63b8e7/packages/debug/DebugTools.st中提到的类Smalltalk 80:语言 within DebugTool.st。旁边提到的其他课程Debugger不一定要实现,可能是因为它们与 GUI 操作相关。

相反,GNU Smalltalk 提供了迷你调试 https://github.com/gnu-smalltalk/smalltalk/blob/a5d7f1ad32fe77ef89406be82b7296899b63b8e7/packages/debug/DebugTools.st与 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 的典型情况。其他操作系统可能会将文件放在不同的位置。

迷你调试器你好世界

A 你好世界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>

的条目c at the (debug)提示是“继续”。其他选项将通过键入显示h(或任何其他无效命令)。

制作调试图像

一旦 MiniDebugger 加载到 gst REPL 中,就可以创建包含调试器的映像:

st> ObjectMemory snapshot: 'myDebuggerImage.im'

然后在启动时重新加载gst(这假设“myDebuggerImage.im”位于当前目录或其他位置gst默认情况下看起来):

$ gst -I myDebuggerImage.im 

设置断点

每当控制流遇到问题时,MiniDebugger 就会出现Object:halt。例如,如果我有文件:

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

Then:

st> h := Halter new
a Halter
st> h breakpoint
'a Halter error: halt encountered'
...
(debug)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GNU Smalltalk 80 调试器。如何调试smallcode代码?启动调试器? 的相关文章

  • 如何禁用 Symfony 2 分析器栏?

    它没有添加任何内容 而且使页面变慢 我希望它消失 别问 网站上几乎没有关于探查器的信息 应用程序配置中也没有任何内容 这个设置是在app config config dev yml web profiler toolbar true int
  • 单步执行 IPython 中的函数

    有没有办法进入 ipython 中函数的第一行 我想象的东西会是这样的 step foo 1 2 运行的ipdb并在第一行设置断点foo 如果我现在想这样做 我必须转到该函数的源代码并添加一个import ipdb ipdb set tra
  • 适用于 Windows 的免费内存调试器? [复制]

    这个问题在这里已经有答案了 可能的重复 有 Windows 的良好 Valgrind 替代品吗 https stackoverflow com questions 413477 is there a good valgrind substi
  • 在多台机器上并行运行脚本

    我有兴趣知道在多台机器的后台尽快启动脚本的最佳方法 目前 我正在这样做 为每个 IP 地址运行 ssh user ip t perl setup pl gt log 但这需要时间 因为它会逐一尝试通过 SSH 连接到每个计算机 以在该计算机
  • 在 Haskell/Yampa 和 HOOD 中调试游戏对象的输出

    我一直坚持使用 Haskell Yampa Arrows with HOOD 为我的游戏对象生成调试输出 我的引擎基本上运行一系列游戏对象 这些对象产生输出状态 线 圆 然后进行渲染 data Output Circle Position2
  • 如何使用 PDB 文件

    我听说使用 PDB 文件可以帮助诊断崩溃发生的位置 My basic理解是你给 Visual Studio 源文件 pdb 文件和崩溃信息 来自 Dr Watson 有人可以解释一下这一切是如何运作的 涉及什么吗 谢谢你 PDB 文件将程序
  • Golang delve,如何启动调试器并启动正在调试的应用程序?

    我正在尝试设置一个可以远程连接的无头深度调试器 我无法找到一种方法来启动调试服务器 而该服务器不会暂停我正在调试的应用程序 我一直在使用dlv attach headless true listen 2345 attach 32但这会暂停该
  • 哪些参数被传递给回溯中的函数?

    在 R 中 如果执行因错误而停止 我可以评估traceback 查看哪个函数发生了错误 哪个函数是从哪个函数调用的 等等 它会给出类似这样的信息 8 ar yw default x aic aic order max order max n
  • 停止所有 JavaScript 执行

    是否有一个相当于 php die 函数的 javascript 可以停止所有 javascript 包括将来的 ajax 请求回调 超时等 运行 注意 我无法在调试器中使用断点 因为 bug 存在于 ie8 中 并且调试器会阻止您在断点处向
  • 如何在浏览模式下禁用 RStudio 中的查看模式

    Is there a way to disable the View mode in RStudio when debugging functions 代码示例 myfun lt function browser myfun 我知道它不开放
  • 观察点固定地址

    对于我当前的嵌入式应用程序 我尝试将 GDB 观察点放在固定的内存地址处 例如 我的应用程序更新以下地址 0x10793ad0 为了确定代码的哪一部分破坏了值 我尝试了 watch 0x10793ad0 即使 GDB 在此之后不会打印任何错
  • Eclipse 调试模式下的 GDB 找不到 stdlib/rand.c

    我试图让 gdb 在 ubuntu 上与 eclipse cdt 一起运行 以开始调试一些简单的程序 所以我做了我认为必要的步骤来让它运行 1 创建可执行项目 2 Compile 3 Run 4 创建文件 gdbinit 并将其放在主项目文
  • php:不知从何而来的空行

    我有奇怪的错误 不知道如何解决它而不浪费太多时间 我的控制器中有一个方法 应该使用以下方法返回 xml header Content type text xml header Content Disposition attachment f
  • Flash 未在调试播放器中显示错误/堆栈跟踪(firefox/chrome/whatnot)

    我正在尝试调试在线默默地失败的应用程序 我 100 确定我正在运行 Flash 调试播放器 为了确保我不会丢失它 我故意抛出一个错误 但 Flash 在浏览器中没有显示任何 stracktrace 我快要失去它了 有什么线索吗 我正在 ch
  • 批评我的非侵入式堆调试器

    这是后续批评我的堆调试器 https stackoverflow com questions 2830272 critique my heap debugger从昨天 根据 bitc 的建议 我现在将有关已分配块的元数据保存在单独的手写哈希
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 在 Eclipse 中的调试会话期间记录所有跟踪信息

    我想记录调试会话的每个步骤的所有调试信息 以便稍后处理所有这些数据 例如调用的方法的名称 参数值 所有变量值等 有没有任何选项可以实现此目的 我应该在哪里更改代码才能实现此目的 一件重要的事情 它不是一个 java 程序 这是一个使用 ac
  • Xcode“使用性能工具运行”被禁用?

    我正在尝试从我的 Xcode 项目中查找内存泄漏 我不知道发生了什么 我无法选择任何内容Run gt Run with performance tool 事物列表被禁用 请帮助我 我是初学者 问题是我已经删除了构建文件夹并尝试使用性能工具运
  • 如何调用使用 Define 创建的 GNU make 宏?

    在我的 Makefile 中调用 GREP 的两种方式有什么区别吗 我有什么理由应该使用其中之一 两者似乎产生相同的结果 define GREP word 3 shell echo define FOO 0xfff00100 endef a
  • 在 Visual Studio 中调试非托管 C++ 图像

    我确实在 Visual Studio 2010 下的非托管 C 上编写了大量图像处理代码 其中涉及许多不同的图像 我希望能够在逐步调试时像简单标识符一样轻松地观看它们 我当前的解决方案是使用一些在 Matlab 控制台中导出图像的函数 可以

随机推荐

  • 如何在 Swift 2.0 中保持标题单元格与表格视图单元格一起移动

    我正在尝试创建一个表格视图 该表格视图在表格视图中间启动标题 然后可以将添加的表格视图单元格向上滚动到顶部 然后停止 然后表格视图单元格可以在其 下方 滚动 我让标题位于 tableview 的中间 但 tableView Cells 只是
  • 启用自定义键盘 iOS8 的应用内购买

    我正在为 iOS 构建自定义键盘 我想知道如何启用应用内购买 该文档指出我可以通过包含的应用程序启用应用程序内购买 但我不确定这意味着什么 技术上 有没有人通过应用内购买构建了 iPhone 扩展 可以给我一些指导 扩展程序与应用程序捆绑在
  • 您认识 16 位时间戳吗?

    我正在使用 Google 书签 它返回 16 位时间戳 我似乎无法在 C 中识别该时间戳以将其转换为真实日期 有什么想法吗 如何转动这个时间戳 1278276905502403在 C 中有意义的东西 这看起来就像以微秒为单位的 UNIX 时
  • 为什么 getQueryString() 在带有 h:commandButton 的 jsf 支持 bean 中不起作用

    我已经在菜单栏顶部构建了一个登录代码片段 如果用户通过导航进入任何页面并突然按下登录按钮 我希望看到该人经过身份验证 同时停留在他最初来自的页面上 所以我在支持 bean 上使用了这个 HttpServletRequest request
  • 等待 Kubernetes 或 Google Container Engine 中的作业/Pod 完成

    在 Kubernetes 或 Google Container Engine 中 脚本中等待作业或 Pod 完成的最佳方式是什么 特别是 最好得到通知而不是轮询状态kubectl 但我会很高兴有一个相当有效的循环 并且裂缝之间没有任何滑动
  • 了解 matplotlib 事件处理:什么是 event 和 mpl_connect?

    我希望能够在按下散点图中的点时显示值 解决方案在这里找到 当鼠标悬停在 matplotlib 中的某个点上时可以显示标签吗 https stackoverflow com questions 7908636 possible to make
  • .NET Core 2.2 迁移生成器无法删除索引

    我正在尝试从 IdentityUserRole 表中名为 UserRole 的列中删除索引 外键 UserRole 有 2 列 用户 ID 和角色 ID 两者都是主键 protected override void OnModelCreat
  • 在*某些* WebAPI 控制器上禁用 SSL 客户端证书?

    为未来的读者编辑 不幸的是 赏金奖励答案 不起作用 我现在对此无能为力 但请阅读我自己的答案 下面 通过测试 确认可以使用最少的代码更改 我们有一个完全采用 ASP NET WebAPI 2 2 的 Azure 云服务 WebRole 无
  • Maven Jetty 插件中的 Jetty JNDI 错误

    我正在尝试配置一个可通过调用 Maven Jetty 插件使用的 JNDI 数据源 我试图在 WAR 文件外部执行此操作 以便以后使用 Jetty 部署我们的 web 应用程序的任何人都不必编辑 WAR 的 WEB INF 目录内的配置文件
  • Android:ViewPager - PagerSlidingTabStrip,state_selected 上的自定义选项卡背景

    当每个选项卡都在时 我需要为每个选项卡使用自定义背景状态选择模式 但当我选择一个选项卡时仍然没有任何反应 我使用这样的选择器 tab selector xml
  • PHP 中的超链接自动生成图像

    我正在为我的第一个客户建立一个网站 使用WordPress 的 Simplicity Lite 主题 http wordpress org themes simplicity lite 我想以某种方式改变主题 以便在特色框位置 幻灯片放映的
  • 在 CSS Bootstrap jquery modal 中将元素暴露在 modal-backdrop 之外

    我正在使用 CSS Bootstrap 的 Modal 功能 它运行得很好 但是 我想添加一项功能 当模式对话框打开并且网页的其余部分被 modal backdrop 覆盖时 来自页面结构范围内不同位置的外部元素之一可以是暴露在背景之上 d
  • 使用中继现代 graphql 添加突变

    我正在尝试使用中继添加用户 下面是我的架构文件 schema graphql createUser input CreateUserInput UserPayload input CreateUserInput clientMutation
  • 如何判断点击了表格中的哪一行号?

    我有一个如下表 table tr td 1 td td 1 td td 1 td tr tr td 2 td td 2 td td 2 td tr tr td 3 td td 3 td td 3 td tr table 当用户单击表时 如何
  • 核心数据问题 - 选择分组依据/具有最大值

    假设我有两个实体 每个消息都属于一个消息线程 如何获取所有消息线程以及该线程上相应的最后一条消息 通常 在 SQL 中 我会这样做 按时间戳 max timeStamp 的线程从消息组中选择 其一 我认为 Core Data 不允许在其谓词
  • C++ Builder vs Delphi vs MFC

    我正在学习MFC 发现它不太好用 我听说过很多关于 Delphi 的事 对 Delphi 的研究让我接触到了 C Builder C Builder 是否提供了 C MFC 的严肃且良好的替代方案 C Builder 比 MFC 更好吗 C
  • Chrome扩展:从popup.js访问background.js的变量

    如果我正在使用chrome extension getBackgroundPage https developer chrome com extensions extension html method getBackgroundPage
  • 如何关闭窗口.打开

    我知道你可以用 window close 关闭 window open 但还有其他方法吗 我有一个打开 facebook 连接的弹出窗口 我想在用户连接到 facebook 时关闭弹出窗口 然后刷新父窗口 我认为过去我使用过 TARGET
  • 一元 & 运算符并在 Ruby 中将过程作为参数传递

    我无法理解下面的这段代码 我了解一元与运算符并将过程作为参数传递给方法的想法 但我实在无法接受过去的事self to the language call 我是这样理解的 我们正在过去self作为 proc block 语言的参数 这对我来说
  • GNU Smalltalk 80 调试器。如何调试smallcode代码?启动调试器?

    在 GNU Smalltalk 80 中 可以用您自己的普通代码编写 Smalltalk 代码 个人选择的文本编辑器 因此 调试代码非常重要 首先 将文件另存为 txt 文件 然后 您可以使用 工具 从程序员文本编辑器中打开该文件 这里的工