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

viewDidLoadiOS 8拡張機能の. NSLogXcodeで何も出力しません。 NSLogただし、コンテナー アプリでは通常どおり動作します。

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

4

16 に答える 16

18

私もこの問題を抱えています。Xcode がデバッガーを拡張機能にアタッチしたり、NSLog メッセージを表示したりすることはありません。Xcode デバッガーを拡張プロセスに手動でアタッチすると、少なくともブレークポイントは魅力的に機能します。

Debug->Attach to process->Your extension name (mine was "com.example.MyExtensionApp.MyExtension")
于 2014-06-05T09:12:18.800 に答える
15
  1. 拡張機能のスキームを作成する
  2. 実行スキーム
  3. ダイアログでコンテナー アプリを選択します
  4. 楽しみ

それは私のために働く:)

于 2014-11-05T22:38:16.627 に答える
5

Xcode 8 は拡張機能をデバッグできます。

  1. 停止ボタンの横にあるコンボで拡張スキームを選択して実行します。
  2. 表示されるダイアログで親アプリケーションを選択します。

結果: ブレークポイントとログは通常どおり機能します。

于 2016-08-15T17:47:50.253 に答える
1

デバッグが機能する唯一の方法は、[デバッグ]-> [PID または名前でプロセスにアタッチ] を選択してから、拡張機能名ではなくPIDを入力することです。デバイスで拡張機能を実行して PID を見つけることができます。[ウィンドウ] -> [デバイス] に移動します。デバイスを見つけて、コンソールを表示します。内線番号の名前が表示されると、その後に 5 桁の数字が続きます。それがPID

また、PIDも見つけるために、拡張機能にNSLogの束を入れました。これはxCode 7にあります

于 2015-10-20T13:45:25.923 に答える
1

NSLog、およびブレークポイントの拡張について同じ問題が発生します。私は何日もそれと戦ってきました。

Device log次の画像のように見つけることができます。にありXCode -> Window -> Devices and Simulatorsます。

を入力するOpen Consoleと、ダイアログの右上に検索フィールドがあります。そこにフィルタールールを適用できます。たとえば、プロセス名にNotificationキーワードが含まれているか、プロセス名が拡張ターゲットの名前と同じである必要があります (例:MyNotificationServiceExtensionプロセス名と同じ)。

デバイスログ

于 2018-05-02T08:17:52.827 に答える
0

Xcode 6 Beta 5 の時点で、iOS8 を実行している実際のデバイスを使用して拡張機能をデバッグすることができました。デバイスで実行してみて、Safari を選択して起動します

于 2014-08-08T03:30:30.417 に答える
0

絶え間なく変化する IDE によって引き起こされるすべての状態を克服するために、lemonjar.com の iOS コンソールを使用しています。これは、プロセス ID に関係なく、syslog メッセージをレンダリングする接続された iOS デバイスのコンソール ウィンドウを表示します。ここでは、アプリと拡張機能の両方のデバッグ ログ メッセージを一度に確認できます。

于 2015-02-15T20:58:10.067 に答える
0

明らかに、Xcode6-B5 で何かが壊れています。

シミュレーターで写真拡張機能を実行しようとすると、拡張機能の添付プロセスのオプションとして Photos.app が表示されません。

シミュレータ内のデバッグ オプション

同じ、実際のデバイスで実行すると、正しい動作が得られます。

実際のデバイスでのデバッグ オプション

最初のケースでは、ブレークポイントは無視されます。後者の場合、ブレークポイントは魅力的に機能します。

于 2014-08-13T12:48:20.187 に答える