2011-09-09 15 views
2

SS、DBX、および自分のアプリケーションで読み込んだ新しいPharo 1.3画像があります。私はOSX10.6で最新のCog VMを使用しています。 VMはランダムにクラッシュし、イメージを再開しようとするとすぐに終了します。スタックトレースは、私のアプリケーションが開いているソケットを読み取っている間に、もはや存在しなくなっていることを示しています。起動時に画像がクラッシュするのを防ぐスタートアップコードをバイパスする

私が知りたいのは、スクリプトやコマンドラインオプションを渡して、Pharoに私のアプリケーションとスタートアップをバイパスさせる方法があるかどうかです。私は自分のコード内でどこを変更する必要があるのか​​正確に知っていると思うので、(コマンドラインから)パッチをファイルすることもできます。

基本的に、私が必要とするのは、画像を起動し、コードを操作し、保存して正常に再起動するセーフモードです。

答えて

2

イメージに.stファイルを渡すことができます。ただし、問題のコードは、ファイルが処理される前に実行される可能性があります(すべての起動メソッドが引数を処理する前に実行されます)。この場合、唯一の選択肢はデバッグVMを構築することです。手動でVMを編集するかgdbを使用してソケットコードの実行を避けたら、実行中のイメージにコードを修正して保存します。その後、通常のVM上で実行することができます。 VMを構築するには、Mariano Martinez Peckの優れた投稿/スクリーンキャストlike this oneを参照してください。また、これを行う私の経験についてのリストthis thread on the Pharoを参照してください。

n.b.これにはかなりの時間がかかる可能性があるため、単純に新しいイメージを開始することとのトレードオフを考慮してください。

+0

ありがとうSean。マリアーノからのVM​​投稿を自分のやり方で動かす。あなたがこれから始める大きな糸。私はイメージを再構築しましたが、カスタムVMのような一般的なソリューションは非常に便利です。イメージはしばしば失敗することはありませんが、そのときには、それを回復しようとするか、何が起きたかを知るための本当の苦痛です。 – JPT

+0

はい、セーフモードの提案は素晴らしいアイデアです。押し続ける(そして気軽に作成してください)!私たちのPharoコミュニティは、ボランティア、メンター、パートナーの偉大な乗組員です。また、イメージクラッシュに直面して、データをより堅牢にする素晴らしい、単純な永続化戦略もあります(Ramon Leonのブログ記事、Squeaksourceにパッケージ化したコードを参照)。また、Metacelloは、プロジェクトの依存関係を1行または2行のコードで読み込むことによって助けます。 –

関連する問題