1. ホーム
  2. ios

[解決済み] NSLogでiOS 8の拡張機能をデバッグするには?

2023-03-08 15:23:55

質問

- (void)viewDidLoad
{
    NSLog(@"%s", __func__);
    // ...
}

viewDidLoad iOS 8 の 拡張機能 . NSLog はXcodeでは何も出力しません。 NSLog はコンテナアプリでは通常通り動きますが

拡張機能からのデバッグメッセージの出力を得るにはどうすればよいですか?

どのように解決するのですか?

  1. アプリの拡張機能でデバッグが動作する。
  2. シミュレータ上でも動作します。
  3. シミュレータでアプリがクラッシュした場合、アプリを再起動するのは簡単ではありません。 シミュレータを再起動するのが手っ取り早い解決方法です。
  4. app extをデバッグする手順。

    1. コンテナアプリを実行します。このステップでは、Xcodeはコンテナアプリとアプリ拡張をデバイスまたはシミュレータにアップロードします。

    2. コンテナアプリを停止します。このステップは、シミュレータでデバッグするときに重要です。これをしないと、Xcodeはシミュレータが使用中であることを告げます。

    3. Xcodeで、メニュー Debug -> Attach to Process -> By Process Identifer (PID) or Name...を押し、アプリ拡張の識別子、例えば com.abc.ContainerApp.MyExtension を入力すると、デバッグが開始されます。ブレークポイントの設定も忘れずに。(2014/8/25更新:MyExtension(自分の拡張機能名)を直接入力することもできます)

    4. デバイスまたはシミュレータで、アプリの拡張機能を開きます。


2014年8月23日の更新情報です。

Xcode 6 beta 6 と iOS 8 SDK beta 5 のシミュレータ上で、上記のデバッグ手順がうまく機能しないことがわかりました。

解決策

  1. シミュレータで拡張機能を実行します。
  2. Xcodeメニュー Debug -> Attach to Process -> メニューのSystemセクションから "MyExtension(拡張機能名)"を選びます。

ブレークポイントは動作しています。しかし、なぜログが出力ウィンドウに表示されないのかわかりません。