ios - إخفاء سجلات Xcode غير المرغوب فيها غريبة




logging xcode8 ios10 (10)

عند استخدام Xcode 8+ وإنشاء مشروع جديد فارغ ، تظهر السجلات التالية عند تشغيل التطبيق:

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

ربما شخص ما وجدت بالفعل التكوين لهذا التعامل معها؟


Answers

هذا لا يزال غير ثابت في النسخة التجريبية من Xcode 8.0 (8S162m) بالنسبة لي ، كما تظهر السجلات الإضافية في وحدة تحكم Xcode

** EDIT 8/1/16: تم الاعتراف بذلك في ملاحظات الإصدار لـ Xcode 8 Beta 4 (8S188o) كمسائل لا تزال قائمة .

المشكلات المعروفة في Xcode 8 beta 4 - IDE

التصحيح

• تعرض Xcode Debug Console تسجيلًا إضافيًا من إطارات النظام عند تصحيح التطبيقات في Simulator. (27331147 ، 26652255)

من المفترض أن يتم حل ذلك من خلال إصدار GM. حتى ذلك الحين ، الصبر وعلى الرغم من أنه ليس مثاليًا ولكن الحل الذي أستخدمه هو أدناه ...

على غرار الإجابة السابقة ، أضطر إلى:

  • بادئة سجلات الطباعة الخاصة بي مع نوع معين من الأحرف الخاصة (على سبيل المثال * أو ^ أو! إلخ.)

  • ثم استخدم مربع البحث في الجزء السفلي الأيسر من جزء وحدة التحكم لتصفية سجلات وحدة التحكم الخاصة بي عن طريق إدخال الحرف الخاص الذي اخترته للحصول على وحدة التحكم لعرض سجلات الطباعة الخاصة بي كما هو مطلوب


لم يعمل OS_ACTIVITY_MODE بالنسبة لي ( ربما كان ذلك بسبب أنني تعطلت disable كما تم disabled ، ولكن ليس ذلك طبيعيًا أكثر؟!؟) ، أو على الأقل لم تمنع قدرًا كبيرًا من الرسائل. إذن ، هذه هي الصفقة الحقيقية لمتغيرات البيئة.

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);
}

لذا فإن إعداد OS_ACTIVITY_DT_MODE على "NO" في متغيرات البيئة (تشرح طريقة GUI في لقطة شاشة Schemes في الإجابة الرئيسية) يجعلها مفيدة لي.

بقدر ما يكون NSLog هو أرض الإغراق لرسائل النظام والأخطاء وتصحيح الأخطاء الخاصة بك: ربما يتم استدعاء نهج تسجيل حقيقي على أي حال ، على سبيل المثال https://github.com/fpillet/NSLogger .

أو

شرب Kool-Aid الجديد: http://asciiwwdc.com/2016/sessions/721 https://developer.apple.com/videos/play/wwdc2016/721/ ليس من المستغرب أن هناك بعض العقبات بعد إصلاح كامل واجهة برمجة التطبيقات لتسجيل الدخول.

إضافة

على أي حال ، NSLog هو مجرد الرقائق:

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

NSLog / CFLog

NSLog الآن مجرد رعشة os_log في معظم الظروف.

من المنطقي الآن فقط أن اقتبس المصدر للمتغير env الآخر. إنه مكان مختلف تمامًا ، هذه المرة من Apple internals. لست متأكدًا من سبب تداخلها. [تعليق غير صحيح حول إزالة NSLog ]

[محرر في 22 سبتمبر]: أتساءل ما الذي يقوم به "إطلاق" و "stream" بشكل مختلف عن "debug". مصدر غير كاف.

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;
    }
}

لقد كان هذا الحل يعمل لي:

  1. قم بتشغيل التطبيق في جهاز محاكاة
  2. افتح سجل النظام ( + / )

سيؤدي ذلك إلى التخلص من جميع بيانات التصحيح وأيضًا NSLogs.

لتصفية عبارات NSLog الخاصة بك:

  1. بادئة كل منها برمز ، على سبيل المثال: NSLog(@"^ Test Log")
  2. تصفية النتائج باستخدام مربع البحث في الجزء العلوي الأيسر ، "^" في الحالة أعلاه

هذا ما يجب أن تحصل عليه:


هذا لم يعد مشكلة في xcode 8.1 (اختبار الإصدار بيتا 8.1 (8T46g)) . يمكنك إزالة متغير بيئة OS_ACTIVITY_MODE من النظام الخاص بك.

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

التصحيح

• لم تعد وحدة التحكم Debug Xcode تظهر تسجيلًا إضافيًا من إطارات النظام عند تصحيح التطبيقات في Simulator. (26652255 ، 27331147)


حسنا. يبدو أن هناك الكثير من الضجة حول هذا ، لذا سأعطيكم طريقة لاستمرارها دون استخدام خدعة هذا المخطط. سوف أتطرق إلى محاكي iOS على وجه التحديد ، ولكن هذا قد يحتاج أيضًا إلى تطبيقه على جهاز Sim TV أيضًا ، والذي يقع في موقع آخر مختلف.

المشكلة التي تسبب كل هذه الأشياء هي plists تقع داخل الدليل Xcode. هناك عملية يتم إطلاقها تسمى configd_sim عند بدء تشغيل Sim والتي تقرأ المساحيق وطباع معلومات التصحيح إذا حددت plants أنه يجب تسجيلها.

توجد الطواحين هنا:

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

إذا كنت تلعب مع بيتا ، خذ علما بأن دير ستكون مختلفة.

سترى العديد من plists في هذا الدليل. الآن ، قم بإنشاء التطبيق الخاص بك وتشغيله ومراقبة السجلات. أنت تبحث عن المحتوى الذي يليه مباشرة النظام الفرعي: جزء. هذا هو الاسم الذي يلي هذا مباشرة والذي يمثل المخطط الإشكالي المناظر.

من هناك ، إما تعديل plist لإخراج التصحيح / المستوى [مفتاح] التصحيح وهو قاموس يحتوي على "Enable" => "Default" مفتاح / قيمة ... أو ببساطة حذف plist. لاحظ أنك ستحتاج إلى أن تكون الجذر للقيام بأي من هذين لأنهما موجودان في تطبيق Xcode.

قد يكون الأمر plutil -p مفيدًا لك أيضًا. أي

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

هذا أعطاني واحدة من الإشكالية التي تضمنت:

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

حظا طيبا وفقك الله :]


ويرتبط ذلك بمشكلة معروفة في تسجيل الدخول الموجود في ملاحظات الإصدار التجريبي من Xcode 8 (كما يُطلب من مهندس في WWDC).

عند تصحيح تطبيقات WatchOS في محاكي Watch ، قد ينتج نظام التشغيل كمية زائدة من التسجيل غير المفيد. (26652255)

لا يتوفر حاليًا حل بديل ، يجب الانتظار للحصول على إصدار جديد من Xcode.

EDIT 7/5/16: يُفترض أن هذا تم إصلاحه اعتبارًا من Xcode 8 Beta 2:

تم حلها في Xcode 8 beta 2 - IDE

التصحيح

  • عند تصحيح أحد التطبيقات على جهاز المحاكي ، تكون السجلات مرئية. (26457535)

Xcode 8 الإصدار بيتا 2 ملاحظات


يرجى الاطلاع على الخطوات أدناه.

  1. حدد Product => Scheme => Edit Scheme أو استخدم الاختصار: CMD + <
  2. حدد الخيار Run من الجانب الأيسر.
  3. في قسم متغيرات البيئة ، أضف المتغير OS_ACTIVITY_MODE = تعطيل

لمزيد من المعلومات ، يرجى الاطلاع على تمثيل GIF أدناه.


كان تغريدة الجواب لي - tweet

لإيقاف Xcode 8 iOS Simulator من تسجيل مثل مجنون ، قم بتعيين متغير بيئة OS_ACTIVITY_MODE = تعطيل في نظام التصحيح الخاص بك.

انها عملت.


جرب هذا:

1- من قائمة Xcode مفتوحة: المنتج> مخطط> Edit Plan

2- في بيئة المتغيرات الخاصة بك مجموعة OS_ACTIVITY_MODE = disable


NSPhotoLibraryUsageDescription $ (PRODUCT_NAME) يستخدم الصور





ios xcode logging xcode8 ios10