iPhone monotouch のデバッグ方法で大悩み

カレンダーを作り単体動作までは簡単にできたのですが,それらにUIButtonなども追加して並べていくと画面が真っ黒になりました.これのデバッグ方法でとても悩んでいます.

結局のところ,コードだけからでは原因が分からず,そこでXCodegdbデバッグを試してみました.
イベントループは回っているみたいですが,UIのどこがおかしいのか,画面は真っ黒なままです.mono のような--traceオプションでも使えれば実行した関数のリストも得られようものですが,mtouchにはそんなオプションはありません.

さてこれからどうしたものか?

フローを追うには,ステップ実行とまでは言わなくてもC#ソースコードの特定箇所にブレイクポイントを設定することが必要ですが,これはそもそもできなさそうです.というのは,XCodeのプロジェクトにはC#ソースコードを中間形式(IL)に変換したEXEファイルが登録されているだけです.そのEXEファイルをmonoのディスアセンブラ monodis で逆アセンブラしてみてみると,ソースコードの情報を含んではいないようです.また,gdbから実行スタックをみるとMain関数からJITが起動されてその上でプログラム本体が動いています.シミュレータ上ではILで動くようです.おそらくデバイスで動かすときにはILをARM向けにコンパイルする仕組みなのでしょう.

ただしEXEファイルと一緒に生成されているアセンブラファイルには,なにやら関数の情報が羅列されているので,これを使えば関数でブレイクすることは可能? なんでしょうか...

開発のやり方を,UIは薄く作りロジックは十分な単体ユニットテストをかければ,そもそもデバッガを使う必要無く開発が進みます.
ですが,自分たちがソースを追えないライブラリ,今回の場合はUI,の動作が分からずに困ってしまったときには,デバッグ特にステップ実行で状況を確認しつつ動作を理解することができれば大いに助かります.

開発環境がトテモ貧弱な組み込み開発で遭遇する状況ではありますが,さてどうしたものかなと一思案です.