3

MonoTouchクラッシュダンプを象徴し、それらから行番号を取得することは可能ですか?もしそうなら、それはどのように行われますか?

次の方法でプロジェクトを構成しました。

  • リリースモードでビルド
  • [プロジェクトオプション]->[ビルド]->[iPhoneビルド]->[全般]タブで[デバッグを有効にする]をオンにしました
  • [プロジェクトオプション]->[ビルド]->[コンパイラ]で[デバッグ情報を出力する]をオンにしました

ここで、ダンプに対してsymbolicatecrashを実行すると、スタックトレースでメソッド名を取得しますが、行番号ではなく、それらに対するオフセット(たとえば、「+ 268」)のみを使用します。

私はMonoTouch4.21を使用しています。

4

2 に答える 2

2

簡単な答え:問題は事前(AOT)コンパイラーにあると思いますが、決定的な答えを得るには、そのような質問をmono-develメーリングリストに電子メールで送信することをお勧めます

長い答え:

Monoコンパイラ/ランタイム(およびその動作はMonoTouchに継承されます)は、mdbファイル内のアセンブリのデバッグ情報(行番号を含む)を保持します。

XCodeはDWARF(DSYM)ファイルで動作します。XCodeがクラッシュダンプを象徴する場合、その情報を取得するために(AOTで生成された)DWARFシンボルを(のみ)検索します。つまり、mdbファイルは検索されません。

これで、Monoデバッガー(およびランタイム)もDWARFに対応できるようになりました(これは法案に適合するはずです)。ただし、MonoTouchの場合、AOTコンパイラ(gccを呼び出す)がC#行番号を含む最終的なDWARFシンボルを生成しているかどうかはわかりません。その結果、シンボルオフセット(両方ともgccで使用可能)のみが使用可能になります。

于 2011-10-06T17:14:15.377 に答える
1

どのバージョンの xcode を使用していますか?

以前のバージョンでは問題がありました - https://github.com/chrispix/symbolicatecrash-fixを確認してください

于 2011-10-05T15:02:13.840 に答える