8

デバッガーとしてlldbを使用してXcode 4.3.2を使用しています。

これらのログ メッセージに示されているように、セカンダリ スレッドから UIKit を呼び出しているコードを含むプロジェクトを継承しました。

2012-05-02 21:48:14.603 Appname Dev[77594:16e0f] void _WebThreadLockFromAnyThread(bool), 0x8d5f810: メイン スレッドまたは Web スレッド以外のスレッドから Web ロックを取得しています。UIKit はセカンダリ スレッドから呼び出されるべきではありません。

セカンダリ スレッドから UIKit 呼び出しを行っていたコードのほとんどをクリーンアップしましたが、ログにこのメッセージがまだ時々表示されます。アプリはクラッシュしていないため、問題がどこにあるかを特定するのは困難です。

にブレークポイントを設定したいのです_WebThreadLockFromAnyThreadが、次を使用してシンボリック ブレークポイントを設定しようとすると:

b _WebThreadLockFromAnyThread

デバッガーは私に教えてくれます:

ブレークポイント セット --name '_WebThreadLockFromAnyThread' 作成されたブレークポイント: 12: 名前 = '_WebThreadLockFromAnyThread'、場所 = 0 (保留中) 警告: ブレークポイントを実際の場所に解決できません。

また、ブレークポイント ナビゲーターの UI を使用してシンボリック ブレークポイントを作成しようとしましたが、モジュールに何を入力すればよいかわかりません。モジュールを空白のままにすると、ブレークポイントが作成されますが、デバッグ コンソールにログ メッセージが表示されたときにまだブレークしていません。

_WebThreadLockFromAnyThreadにブレークポイントを追加する方法と、このシンボルの定義モジュールが何であるかを判断する方法を誰か教えてもらえますか?

4

3 に答える 3

3

アンダースコアは省略してください。b WebThreadLockFromAnyThreadは、lldbとgdbの両方で機能します。さて、これはXcode 4.6なので、古いバージョンに固執している場合は、4.6に存在しないそのバージョンに問題がある可能性があると思います。

于 2013-03-16T01:57:57.693 に答える
0

ほとんどの場合、必要なシンボルはありません。xcode はデフォルトで「リリース」ビルドを生成し、それが正しければシンボルを削除して exec ファイルをはるかに小さくするためです。現時点ではどうすればよいかわかりませんが、「デバッグ」ビルドに切り替えるオプションを見つける必要があります。これにより、すべての素敵なシンボルが分析を待っていることが保証されます。

于 2012-05-18T20:20:04.583 に答える
0

nm コマンドまたは class-dump ツールを使用して、モジュールを見つけることができます。

于 2012-05-11T01:40:53.333 に答える