ios - vois - masquer application iphone




Masquer les étranges journaux Xcode indésirables (8)

Bien. Il semble y avoir beaucoup de bruit autour de celui-ci, je vais donc vous donner le moyen de le persister sans utiliser ce stratagème. Je parlerai plus particulièrement du simulateur iOS, mais il faudra peut-être également appliquer cette solution au simulateur de télévision, situé dans un répertoire différent.

Le problème à l'origine de tout cela est la pliste située dans le répertoire Xcode. Il existe un processus appelé configd_sim au démarrage du Sim, qui lit les plists et imprime des informations de débogage si les plists spécifient qu'ils doivent être consignés.

Les plists sont situés ici:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Preferences/Logging/Subsystems

Si vous jouez avec une version bêta, notez que le répertoire sera différent.

Vous verrez de nombreux plists dans ce répertoire. Maintenant, construisez et exécutez votre application et observez les journaux. Vous recherchez le contenu immédiatement suivi du sous - système: partie. C'est le nom qui suit immédiatement celui-ci qui représente le plist problématique correspondant.

À partir de là, modifiez le plist pour masquer la clé / valeur de débogage [Niveau] qui est un dictionnaire contenant la clé / valeur "Enable" => "Default" ... ou supprimez simplement le plist. Notez que vous devez être root pour effectuer l’un ou l’autre, car ils sont situés dans l’application Xcode.

la commande plutil -p pourrait également vous être utile. c'est à dire

plutil -p /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/System/Library/Preferences/Logging/Subsystems/com.apple.BackBoardServices.fence.plist

Cela m'a donné l'un des plists problématiques qui contenaient:

{ "DEFAULT-OPTIONS" => { "Level" => { "Enable" => "Default" }}}

Bonne chance :]

Lors de l'utilisation de Xcode 8+ et de la création d'un nouveau projet vierge, les journaux suivants apparaissent lors de l'exécution de l'application:

2016-06-13 16:33:34.406093 TestiOS10[8209:100611] bundleid: com.appc.TestiOS10, enable_level: 0, persist_level: 0, propagate_with_activity: 0
2016-06-13 16:33:34.406323 TestiOS10[8209:100607] Created DB, header sequence number = 248
2016-06-13 16:33:34.409564 TestiOS10[8209:100611] subsystem: com.apple.UIKit, category: HIDEvents, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-06-13 16:33:34.504117 TestiOS10[8209:100607] Created DB, header sequence number = 248
2016-06-13 16:33:34.548023 TestiOS10[8209:100607] subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-06-13 16:33:34.568458 TestiOS10[8209:100608] subsystem: com.apple.FrontBoard, category: Common, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0

Peut-être que quelqu'un a déjà trouvé une configuration à gérer?


Ce n'est plus un problème dans xcode 8.1 (version testée bêta 8.1 (8T46g)) . Vous pouvez supprimer la variable d'environnement OS_ACTIVITY_MODE de votre schéma.

https://developer.apple.com/go/?id=xcode-8.1-beta-rn

Débogage

• La console de débogage Xcode n'affiche plus de journalisation supplémentaire à partir des infrastructures système lors du débogage des applications dans le simulateur. (26652255, 27331147)


Cette solution a fonctionné pour moi:

  1. Lancer l'application dans le simulateur
  2. Ouvrez le journal du système ( + / )

Cela déchargera toutes les données de débogage ainsi que vos NSLogs.

Pour filtrer uniquement vos instructions NSLog:

  1. Préfixez chacun avec un symbole, par exemple: NSLog(@"^ Test Log")
  2. Filtrer les résultats en utilisant le moteur de recherche en haut à droite, "^" dans le cas ci-dessus

Voici ce que vous devriez obtenir:


Dans Xcode 10, la variable OS_ACTIVITY_MODE avec une valeur disable (ou default ) disable également le NSLog , quoi qu'il en soit.

Donc, si vous voulez vous débarrasser du bruit de la console mais pas de vos propres journaux, vous pouvez essayer le bon vieil printf("") au lieu du journal NSLog car il n'est pas affecté par OS_ACTIVITY_MODE = disable .

Mais mieux vaut consulter la nouvelle API os_log here .


Ma solution consiste à utiliser la commande du débogueur et / ou le message de journal dans les points d'arrêt.

Et changez la sortie de la console de Toutes les sorties à la sortie du débogueur comme


OS_ACTIVITY_MODE ne fonctionnait pas pour moi (c'était peut -être parce que je disable comme disabled , mais n'est-ce pas plus naturel?!?), Ou du moins n'empêchait pas beaucoup de messages. Alors, voici le vrai problème avec les variables d'environnement.

https://llvm.org/svn/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp

lldb_private::Error
PlatformDarwin::LaunchProcess(lldb_private::ProcessLaunchInfo &launch_info) {
  // Starting in Fall 2016 OSes, NSLog messages only get mirrored to stderr
  // if the OS_ACTIVITY_DT_MODE environment variable is set.  (It doesn't
  // require any specific value; rather, it just needs to exist).
  // We will set it here as long as the IDE_DISABLED_OS_ACTIVITY_DT_MODE flag
  // is not set.  Xcode makes use of IDE_DISABLED_OS_ACTIVITY_DT_MODE to tell
  // LLDB *not* to muck with the OS_ACTIVITY_DT_MODE flag when they
  // specifically want it unset.
  const char *disable_env_var = "IDE_DISABLED_OS_ACTIVITY_DT_MODE";
  auto &env_vars = launch_info.GetEnvironmentEntries();
  if (!env_vars.ContainsEnvironmentVariable(disable_env_var)) {
    // We want to make sure that OS_ACTIVITY_DT_MODE is set so that
    // we get os_log and NSLog messages mirrored to the target process
    // stderr.
    if (!env_vars.ContainsEnvironmentVariable("OS_ACTIVITY_DT_MODE"))
      env_vars.AppendArgument(llvm::StringRef("OS_ACTIVITY_DT_MODE=enable"));
  }

  // Let our parent class do the real launching.
  return PlatformPOSIX::LaunchProcess(launch_info);
}

Donc, définir OS_ACTIVITY_DT_MODE sur "NO" dans les variables d'environnement (la méthode de l'interface graphique expliquée dans la capture d'écran Schemes dans la réponse principale) me le permet.

Pour autant que NSLog soit le dépotoir des messages système, des erreurs et de votre propre débogage: une véritable approche de journalisation est probablement requise, par exemple https://github.com/fpillet/NSLogger .

OU

Buvez le nouveau Kool-Aid: http://asciiwwdc.com/2016/sessions/721 https://developer.apple.com/videos/play/wwdc2016/721/ Il n'est pas étonnant qu'il y ait des problèmes après avoir revu l'ensemble API de journalisation.

ADDENDA

Quoi qu'il en soit, NSLog est juste une cale:

https://developer.apple.com/library/content/releasenotes/Miscellaneous/RN-Foundation-OSX10.12/

NSLog / CFLog

NSLog est maintenant juste une alternative à os_log dans la plupart des cas.

C’est seulement logique maintenant de citer le source pour l’autre variable env. Un endroit assez disparate, cette fois des internes Apple. Vous ne savez pas pourquoi ils se chevauchent. [Commentaire incorrect sur NSLog supprimé]

[Edité le 22 septembre]: Je me demande ce que "release" et "stream" font différemment de "debug". Pas assez de source.

https://github.com/macosforge/libdispatch/blob/8e63547ea4e5abbfe55c0c3064181c4950a791d3/src/voucher.c

e = getenv("OS_ACTIVITY_MODE");
if (e) {
    if (strcmp(e, "release") == 0) {
        mode = voucher_activity_mode_release;
    } else if (strcmp(e, "debug") == 0) {
        mode = voucher_activity_mode_debug;
    } else if (strcmp(e, "stream") == 0) {
        mode = voucher_activity_mode_stream;
    } else if (strcmp(e, "disable") == 0) {
        mode = voucher_activity_mode_disable;
    }
}

Un tweet a eu la réponse pour moi - tweet

Pour que le simulateur iOS Xcode 8 ne se connecte pas de manière insensée, définissez une variable d'environnement OS_ACTIVITY_MODE = disable dans votre schéma de débogage.

Ça a marché.


Veuillez trouver les étapes ci-dessous.

  1. Sélectionnez Product => Scheme => Edit Scheme ou utilisez le raccourci: CMD + <
  2. Sélectionnez l'option Run du côté gauche.
  3. Dans la section Variables d'environnement, ajoutez la variable OS_ACTIVITY_MODE = disable

Pour plus d'informations, veuillez trouver la représentation GIF ci-dessous.





ios10