iOS アプリケーションのデバッグ

提供: RAD Studio
移動先: 案内検索

マルチデバイス アプリケーションのデバッグ への移動

RAD Studio では、iOS シミュレータ(Delphi でのみ利用可能)または iOS デバイスで動作している iOS アプリケーションを IDE でデバッグすることができます。 iOS アプリケーションの場合、IDE におけるデバッグは、RAD Studio における Windows アプリケーションや macOS アプリケーションのデバッグと似たやり方で行うことができます。 しかし、提供されているデバッガ機能は、ターゲット プラットフォームやオペレーティング システムによって異なります。 具体的には、iOS シミュレータ ターゲット プラットフォーム(macOS オペレーティング システム)のデバッガでは、iOS デバイス - 32 ビットiOS デバイス - 64 ビットがターゲット プラットフォーム(iOS オペレーティング システム)であるデバッガより、多くの機能を IDE で使用することができます。

この後のセクションでは、iOS シミュレータiOS デバイス - 32 ビットiOS デバイス - 64 ビットでどのデバッガ機能を使用できるか(または使用できないか)を説明します。

iOS シミュレータ:iOS シミュレータで動作しているアプリケーションのデバッグ

一般に、このデバッガでは、iOS デバイス用のデバッガよりも充実した機能を使用することができます。

プロパティの評価および変更は、iOS シミュレータでは完全にサポートされてはいません。

メモ: iOS シミュレータ アプリケーションのデバッグは、Delphi の場合のみ有効です。

iOS デバイス:iOS デバイス上で動作するアプリケーションのデバッグ

32 ビット iOS デバイスと 64 ビット iOS デバイスのデバッガの機能は、Windows のものとは異なります。

[モジュール]ウィンドウ

  • 関数エントリはサポートされていません。
  • [エントリ ポイント][アドレス]の列に内容が表示されません([エントリ ポイント]のコンテキスト メニューが空であるためです)。

[デバッグ インスペクタ]

  • [データ]列のみ内容が設定されています。
  • [メソッド][プロパティ]は表示されません。

bfd_mach_o_scan_read 系エラーの解決

SDK または OS の新しいバージョンに更新すると、次のような警告が表示される可能性があります。

bfd_mach_o_scan_read_symtab_symbol: symbol "_strcmp" is unsupported 'indirect' reference: setting to undefined
bfd_mach_o_scan_read_symtab_symbol: symbol "_bzero" is unsupported 'indirect' reference: setting to undefined
bfd_mach_o_scan_read_symtab_symbol: symbol "_strchr" is unsupported 'indirect' reference: setting to undefined
bfd_mach_o_scan_read_symtab_symbol: symbol "_memset_pattern16" is unsupported 'indirect' reference: setting to undefined
bfd_mach_o_scan_read_symtab_symbol: symbol "_memcpy" is unsupported 'indirect' reference: setting to undefined
bfd_mach_o_scan_read_symtab_symbol: symbol "_memcmp" is unsupported 'indirect' reference: setting to undefined
bfd_mach_o_scan_read_symtab_symbol: symbol "_memchr" is unsupported 'indirect' reference: setting to undefined
bfd_mach_o_scan_read_symtab_symbol: symbol "_memccpy" is unsupported 'indirect' reference: setting to undefined
bfd_mach_o_scan_read_symtab_symbol: symbol "_memset_pattern8" is unsupported 'indirect' reference: setting to undefined

これらの警告が発生するのは、実際のデバイス ライブラリではなく SDK ライブラリがデバッガで使用されるためです。ファイルを再同期させるには、iOS プロジェクトを Xcode の iOS プロジェクト テンプレート(たとえば[Empty Application]など)から実行します。警告がなくなるはずです。そうでない場合は、デバイスを iOS の次のサブマイナー バージョンにアップグレードすると、警告がなくなります。これらの警告はデバッグ作業には影響を及ぼしません。

[デバッガを使わずに実行]で iOS アプリケーションが停止しない可能性がある

デバッガを使わずにデバイス上で iOS アプリケーションを実行すると、iOS インストーラがプログラムにまだアタッチされているため、アプリケーションが実行したままになる可能性があります。デバッガが動作しておらずアプリケーションを停止できないため、iOS アプリケーションを閉じても終了しない可能性があります。

その場合には、Mac 上の接続している PAServer インスタンスを終了する必要があります。(PAServer のコマンド プロンプト(>)に q コマンドを入力してください。)

64 ビット iOS デバイス上で動作するアプリケーションのデバッグ

次のように、[iOS デバイス - 32 ビット]をターゲット プラットフォームとするアプリケーションのデバッグ時に使用できる機能の一部は、[iOS デバイス - 64 ビット]をターゲット プラットフォームとするアプリケーションの場合には使用できない可能性があります。

  • デバッガは、動的配列や TObject から継承した仮想メソッドを伴うオブジェクトなど、多くの Delphi 型の評価をサポートしています。
  • ツールチップは無効になっています。
  • Delphi の構文が、Delphi 式を評価できるよう完全にサポートされていません。このため、回避策として C++ の構文が使用されます。
  • Delphi 識別子は大文字小文字を区別します。評価する際には、ソースと一致するように大文字小文字を使用する必要があります。
  • 例外が発生するおそれのある評価を防ぐことはできません。初期化されていないデータにアクセスしたり例外を発生させるおそれのある関数を評価しないように気をつけます。

上記のオプションを使ってデバッグする必要がある場合は、できるだけ[iOS デバイス - 32 ビット]をターゲット プラットフォームとして設定してデバッグを完了することをお勧めします。

メモ: 追加共有ライブラリは iOS64 デバッガに読み込まれます。これらの共有ライブラリはデバッガによって制御されており、無視しても構いません。 そのようなライブラリには次のものがあります:
  • __lldb_apple_objc_v2_get_dynamic_class_info
  • __lldb_caller_function
  • __lldb_apple_objc_v2_get_shared_cache_class_info
  • __lldb_caller_function
メモ: iOS64 デバッガでは、さらなるスレッドが実行されていることに気づいたかもしれません。 これらの追加スレッドはデバッガによって制御されており、無視しても構いません。

関連項目