iPhoneデバッグ〜weasel編

NSLog()編に続き、シンプルなデバッガーweaselによるiPhone勝手アプリのデバッグ方法です。

まず、weaselを適当なところ(ソースとかhdm-0.01とかhdm-0.02とか)からダウンロードして、iPhoneの実行パスのあるディレクトリ(例えば、/binとか/usr/binとか)にコピーしておきます。

次に、SSHでMacをiPhoneに接続します。詳しくはNSLog()編参照ね。

ssh -t root@255.255.255.255 “cd /; $SHELL”

それでは、実行ファイルを指定してweaselを起動します。

weasel /Applications/akaRemote.app/akaRemote

[$3000d232 weasel] といったプロンプトが出れば、weaselの起動は成功。実行ファイルが読み込まれて、実行される直前で一時停止している状態です。

ここで、「h」をタイプしてreturnキーを押すと、次のようなヘルプが表示されます。

Available weasel commands:
b set a breakpoint at the given address
c continue execution
d disassemble starting at the given address
(if no address given, continues from last point)
m continue execution and profile the process
n print the symbol table of the main image
p peek at memory starting at the given address
q quit weasel and inferior
r print the current values of the CPU registers
x delete the breakpoint with the given number
v dump all virtual memory addresses
f find a string in memory

この後は、weaselのコマンドを駆使してデバッグしてください。何はともあれ、nコマンド(「n」をタイプしてreturnキーを押す)でシンボル・テーブルを表示させるのがイの一番かな。「00002930 start」みたいなアドレスとシンボル(実行ポイントや変数など)の一覧表がズラズラっと表示されるはずです。こののアドレスを元にブレーク・ポイントを設定したり、変数の内容を表示したりできるわけです。実行を開始するのはcコマンドまたはmコマンドね。

iphone-weasel.png

weaselは、Xcodeが備えるような高機能デバッガじゃないので、ステップ実行したり、変数の内容を型に従って表示したりといったことはできません(涙)。ナイよりはマシといった程度かもしれませんが、それでもこのような環境でiPhoneを解析している人が何人もいらっしゃる訳で、頭が下がる思いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です