Smalltalk 绕过启动代码以防止映像在启动时崩溃

Smalltalk 绕过启动代码以防止映像在启动时崩溃,smalltalk,pharo,Smalltalk,Pharo,我有一个新的Pharo 1.3映像,我刚刚加载了SS、DBX和我的应用程序。我正在OSX10.6上使用最新的Cog虚拟机。虚拟机随机崩溃,当我尝试重新启动映像时,它立即退出。堆栈跟踪显示我的应用程序读取打开的套接字时出错,当然,该套接字已不存在 我想知道的是,有没有办法传递脚本或命令行选项,让Pharo绕过我的应用程序并启动?我想我确切地知道我需要在代码中的什么地方进行更改,所以即使我可以(从命令行)提交一个补丁,这也会起作用 基本上,我需要的是一个安全模式来引导映像,操作代码,正常保存和重新启

我有一个新的Pharo 1.3映像,我刚刚加载了SS、DBX和我的应用程序。我正在OSX10.6上使用最新的Cog虚拟机。虚拟机随机崩溃,当我尝试重新启动映像时,它立即退出。堆栈跟踪显示我的应用程序读取打开的套接字时出错,当然,该套接字已不存在

我想知道的是,有没有办法传递脚本或命令行选项,让Pharo绕过我的应用程序并启动?我想我确切地知道我需要在代码中的什么地方进行更改,所以即使我可以(从命令行)提交一个补丁,这也会起作用


基本上,我需要的是一个安全模式来引导映像,操作代码,正常保存和重新启动。

您可以尝试向映像传递一个.st文件。但是,有问题的代码可能会在处理文件之前执行(所有启动方法都会在处理参数之前执行)。在这种情况下,您唯一的选择是构建一个调试VM。手动编辑VM或使用gdb避免执行套接字代码后,请在当前运行的映像中修复代码并保存。然后你就可以在普通的虚拟机上运行它了。要构建虚拟机,请参阅Mariano Martinez Peck的优秀文章/屏幕广播。另外,请参阅我做这件事的经验列表


这可能需要相当长的一段时间,所以考虑一下简单地开始一个新的图像的权衡。

谢谢肖恩。在Mariano的虚拟机帖子中工作。从你那里得到的很好的线索开始了这一步。我刚刚重建了我的映像,但是有一个通用的解决方案,比如定制虚拟机将非常有用。图像不会经常出现故障,但当它们出现故障时,试图恢复它们或找出发生了什么是一件非常痛苦的事情。是的,你对安全模式的建议也是一个很好的主意-继续推动(甚至可以自由地发明一个)!我们的Pharo社区是一个由志愿者、导师和合作伙伴组成的庞大团队。还有一些很棒的简单持久化策略,可以使数据在图像崩溃时更加健壮(请参阅Ramon Leon的博客文章;我在Squeaksource上打包的代码)。此外,Metacello还可以帮助您在一行或两行代码中加载具有依赖关系的项目。