2011-09-09 80 views
2

我有一個新的Pharo 1.3圖像,我剛加載了SS,DBX和我的應用程序。我在OSX10.6上使用最新的Cog VM。虛擬機隨機崩潰,當我嘗試重新啓動映像時,它立即退出。堆棧跟蹤顯示我的應用程序讀取一個打開的套接字時出錯,當然,這個套接字不再存在。繞過啓動代碼以防止啓動時圖像崩潰

我想知道,有沒有辦法通過腳本或命令行選項,並讓Pharo繞過我的應用程序和啓動?我想我確切知道我的代碼中哪些地方需要更改,所以即使我可以從命令行輸入一個補丁,也可以起作用。

基本上,我需要的是一個安全模式來啓動圖像,並操縱代碼,保存並正常重啓。

回答

2

您可以嘗試將.st文件傳遞給圖像。但是,可以在處理文件之前執行有問題的代碼(在處理參數之前執行所有啓動方法)。在這種情況下,唯一的選擇是構建一個調試虛擬機。在手動編輯虛擬機或使用gdb來避免執行套接字代碼之後,將代碼修復到正在運行的圖像中並保存。然後你就可以在普通的虛擬機上運行它。有關構建VM的信息,請參閱Mariano Martinez Peck的優秀帖子/屏幕錄像like this one。另請參閱this thread on the Pharo列表,瞭解我的經驗。

n.b.這可能需要相當長的一段時間,所以考慮簡單地開始一個新的圖像的權衡。

+0

謝謝肖恩。通過馬里亞諾的VM帖子工作。從你開始的大線程開始。我只是重建了我的鏡像,但是有一個通用的解決方案,比如自定義虛擬機將非常有用。圖像不會經常失敗,但是當它們發生時,嘗試恢復圖像或查明發生了什麼真是痛苦。 – JPT

+0

是的,你對安全模式的建議也是一個好主意 - 繼續推動(甚至可以自由發明)!我們的Pharo社區是一羣志願者,導師和合作夥伴。還有一些很棒的簡單的持久性策略,可以在數據崩潰的情況下使數據更加健壯(參見Ramon Leon的博客文章;我在Squeaksource上打包的代碼)。此外,Metacello可以通過使您的項目依賴項加載一行或兩行代碼來提供幫助。 –