91 votes

Comment déboguer iOS 8 extensions avec NSLog?

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

en viewDidLoad de l'iOS 8 d'extension. l' NSLog sorties rien dans Xcode. NSLog fonctionne comme d'habitude dans le conteneur d'application.

Comment puis-je obtenir de sortie de messages de débogage à partir d'une extension?

97voto

Vince Yuan Points 1735
  1. Fonctionne de débogage pour l'application des extensions.
  2. Il fonctionne sur simulateur de trop.
  3. Si votre application ext se bloque dans le simulateur, vous pouvez trouver qu'il n'est pas facile de redémarrer votre application ext. Le redémarrage de votre simulateur est une solution rapide.
  4. Étapes pour déboguer une application de l'extension:

    1) Lancez l'app container. Dans cette étape, Xcode, télécharge l'app container et de l'application de l'extension de l'appareil ou un simulateur.

    2) Arrêter le conteneur d'application. Cette étape est importante lorsque vous déboguez dans le simulateur. Si vous ne le faites pas, Xcode, vous dira le simulateur est en cours d'utilisation.

    3) Dans Xcode, appuyez sur menu Debug -> Attach to Process -> Par Processus Identifiant (PID) ou le Nom..., entrée de l'application ext identificateur, par exemple, com.abc.ContainerApp.MyExtension, pour démarrer le débogage. N'oubliez pas de définir des points d'arrêt. (Mise à jour le Août 25, 2014: vous pouvez entrer des MyExtension(votre extension de nom) directement.)

    4) Dans l'appareil ou simulateur, ouvrez votre application extension.


Les mises à jour sur Août 23, 2014:

J'ai trouvé le débogage des étapes ci-dessus ne fonctionnent pas bien sur Xcode 6 beta 6 avec iOS 8 SDK beta 5 sur le simulateur.

Solution:

  1. Exécutez votre extension dans le simulateur.
  2. Xcode menu Debug -> Attach to Process -> Choisissez "MyExtension(extension du nom)" dans la section Système dans le menu.

Les points d'arrêt de travail. Mais je ne sais pas pourquoi les journaux ne s'affiche pas dans la fenêtre de sortie.

49voto

BalestraPatrick Points 1027

Je vais avoir ce problème aussi. Il fonctionne pour moi si vous allez dans votre Simulateur sous le menu Debug -> Ouvrir le Journal Système...

À partir d'ici vous pouvez voir tous les journaux de l'iPhone Simulateur (inclus votre extension de journaux).

enter image description here

32voto

Santa Claus Points 4237

NSLog fonctionne parfaitement.

Vous venez de ne pas voir ce qui est enregistré dans le débogage de la zone de Xcode parce que Xcode débogueur n'est pas attaché à votre poste. Les Extensions sont presque complètement indépendant de leur contenant de l'application. Ils ont séparé bundle identifiants, par exemple, et ils sont aussi des processus distincts sur le système d'exploitation.

J'ai eu certains succès dans l'obtention de Xcode pour fixer les extensions. Soi-disant, il semble qu'il accorde automatiquement, et il apparaît dans le navigateur de débogage en Attente pour joindre", mais jamais de l'attache.

Parfois, je suis en mesure d'exécuter mon objectif d'extension dans Xcode:

enter image description here

Et ensuite vous avez l'option de choisir quelle application pour exécuter mon extension. Dans ce cas, je choisirais de sa recommandation de "aujourd'hui", qui est le centre de notifications.

enter image description here

Et puis il serait parfois attacher le débogueur à mon poste. Remarque: cette méthode ne fonctionne que sur des périphériques physiques, il semble.

Si elle ne se rattache pas, vous pouvez utiliser le manuel de la méthode de fixation dans @VinceYaun réponse,

J'ai également eu des fortunes diverses à l'aide d'autres méthodes de fixation. La plupart ont été infructueuses, et il semble qu'ils sont juste des bugs qui vont être fixée à une date ultérieure.

Pour afficher vos messages de journal vous allez à l' Window -> Devices dans la barre du haut et sélectionnez votre appareil. Vous pouvez afficher les journaux de périphérique à partir du bas de la fenêtre. Si vous sont à l'essai sur un simulateur, vous pouvez utiliser @BalestraPatrick de réponse.

Certains bugs ont été corrigés dans la version Bêta 2, et mon sentiment est que, finalement, le débogueur s'attache automatiquement lors du lancement de l'extension.

Mise à jour: Dans l'iOS 8 Bêta 4 notes de version:

Extensions

Fixe dans la bêta 4

  • Extensions parfois ne parviennent pas à lancer lors du débogage à partir de Xcode.
  • Lors de l'Extension avec l'INTERFACE utilisateur est tué, elle redémarre et n'est pas rejetée.
  • Parfois, votre Partage ou de l'Action de l'extension de l'accrocher.
  • Le redéploiement d'une extension peut le désactiver dans le Centre de notifications.

18voto

user3422677 Points 208

Je vais avoir ce problème aussi. Xcode jamais attache mon débogueur à l'extension ou affiche NSLog messages. Si vous fixez votre Xcode débogueur manuellement à votre processus d'extension, au moins des points d'arrêt de travail comme un charme:

Debug->Attach to process->Your extension name (mine was "com.example.MyExtensionApp.MyExtension")

14voto

Maciek Czarnik Points 445
  1. Créer le schéma de votre extension
  2. Système
  3. Dans une boîte de dialogue choisir app container
  4. Profitez de

Il fonctionne pour moi :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X