มีวิธีดูบันทึกคอนโซลแบบเรียลไทม์เพื่อดู NSLog และข้อความดีบักอื่น ๆ แบบเรียลไทม์เช่น adb logcat หรือไม่
มีวิธีดูบันทึกคอนโซลแบบเรียลไทม์เพื่อดู NSLog และข้อความดีบักอื่น ๆ แบบเรียลไทม์เช่น adb logcat หรือไม่
คำตอบ:
โซลูชันที่ Apple บันทึกไว้ใน Q&A ทางเทคนิค QA1747 การดีบักแอพ iOS ที่ปรับใช้สำหรับ Xcode 6 คือ:
print
stdout
งบไม่ได้ไปเพื่อเข้าสู่ระบบเท่านั้นที่จะ ใช้NSLog
แทน หรืออาจเป็นไปได้ที่จะเปลี่ยนเส้นทางstdout
ไปยังไฟล์ที่มีรหัสเพิ่มเติม ระบบจะบันทึกข้อขัดข้องและสามารถเข้าถึงได้โดยใช้ปุ่ม "ดูบันทึกอุปกรณ์"
แก้ไข: โปรดใช้โซลูชัน @cbowns - deviceconsole เข้ากันได้กับ iOS9 และใช้งานง่ายกว่ามาก
นี่คือโปรแกรมโอเพ่นซอร์สที่แสดงบันทึกระบบของ iDevice ใน Terminal (ในลักษณะคล้ายกับ tail -F) ไม่จำเป็นต้องเจลเบรคและเอาต์พุตเป็นแบบ grep'able อย่างเต็มที่ดังนั้นคุณสามารถกรองเพื่อดูผลลัพธ์จากโปรแกรมของคุณเท่านั้น สิ่งที่ดีเป็นพิเศษเกี่ยวกับโซลูชันนี้คือคุณสามารถดูบันทึกได้ว่าแอปเปิดตัวในโหมดดีบักจาก XCode หรือไม่
วิธีการมีดังนี้
คว้าไบนารี libimobiledevice สำหรับ Mac OS X จากบัญชี github ของฉันที่ https://github.com/benvium/libimobiledevice-macosx/zipball/master
ทำตามคำแนะนำในการติดตั้งที่นี่: https://github.com/benvium/libimobiledevice-macosx/blob/master/README.md
เชื่อมต่ออุปกรณ์ของคุณเปิด Terminal.app แล้วพิมพ์:
idevicesyslog
Up จะแสดงบันทึกระบบของอุปกรณ์แบบเรียลไทม์
เนื่องจากเป็นแอปคอนโซลคุณจึงสามารถกรองบันทึกโดยใช้คำสั่ง unix เช่น grep
ตัวอย่างเช่นดูข้อความบันทึกทั้งหมดจากแอปเฉพาะ:
idevicesyslog | grep myappname
นำมาจากบล็อกของฉันที่http://pervasivecode.blogspot.co.uk/2012/06/view-log-output-of-any-app-on-iphone-or.html
No device found, is it plugged in?
brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
สองตัวเลือก:
libimobiledeviceสามารถติดตั้งผ่านhomebrewและใช้งานได้ดี ใช้idevicesyslog
เครื่องมือที่ทำงานคล้ายกับdeviceconsole
(ด้านล่าง) และสนับสนุนแบบไร้สายดู syslog อุปกรณ์ของคุณ (!)
ฉันได้เขียนเพิ่มเติมเกี่ยวกับเรื่องนี้ใน Tumblr tl; dr:
brew install libimobiledevice
idevice_id --list // list available device UDIDs
idevicesyslog -u <device udid>
ด้วยอุปกรณ์ที่เชื่อมต่อผ่าน USB หรือพร้อมใช้งานบนเครือข่ายไร้สายในพื้นที่
ตั้งแต่ปี 2013: deviceconsoleจาก rpetrich เป็นโซลูชันที่ขาดหายไปน้อยกว่า ideviceconsole ด้านบน ส้อมของฉันสร้างและทำงานใน Xcode 5 นอกกรอบและการดำเนินการสร้างจะติดตั้งไบนารีเพื่อ/usr/local/bin
ให้ใช้งานง่าย
เพื่อเป็นข้อมูลเพิ่มเติมที่เป็นประโยชน์ฉันใช้มันในรูปแบบต่อไปนี้ซึ่งทำให้ง่ายต่อการค้นหาอุปกรณ์ที่ฉันต้องการในประวัติเชลล์ของฉันและลบ>
บรรทัดที่ไม่จำเป็นที่deviceconsole
พิมพ์ออกมา
deviceconsole -d -u <device UDID> | uniq -u && echo "<device name>"
libimobiledevice
ให้แน่ใจว่าคุณกำลังใช้ล่าสุด (การดูบันทึกแบบใช้สายและไร้สายใช้งานได้กับ Mac ของฉันใน 10.11 และ iPhone ของฉันบน iOS 10.2)
brew install --HEAD libimobiledevice
. ทำงานให้ฉัน
เพียงแค่เปิดแอปพลิเคชันConsole.app
บน mac osX
คุณสามารถค้นหาได้ภายใต้Applications
> >Utilities
Console
ทางด้านซ้ายของแอปพลิเคชันอุปกรณ์ที่เชื่อมต่อทั้งหมดของคุณจะแสดงรายการ
ลองฟรีแวร์คอนโซล iOS เพียงดาวน์โหลดเปิดตัวเชื่อมต่ออุปกรณ์ของคุณ - et voila!
Console.app
[ซึ่งมาพร้อมกับ macOS] ล่ะ
นี่อาจเป็นสิ่งที่คุณกำลังมองหา: Xcode Organizer
อุปกรณ์> เอาต์พุตเทอร์มินัลอยู่ในแอพกำหนดค่า iPhone
คุณมีสามทางเลือก:
ดังนั้นเพื่อให้ได้2ºคุณเพียงแค่ต้องติดตั้ง syslogd และ OpenSSH จาก Cydia ให้รีสตาร์ทที่จำเป็นหลังจากนั้นเพื่อให้ syslogd ทำงาน ตอนนี้เพียงเปิดเซสชัน ssh ไปยังอุปกรณ์ของคุณ (ผ่านเทอร์มินัลหรือสีโป๊วบน windows) แล้วพิมพ์ "tail -f / var / log / syslog" บันทึกระบบเรียลไทม์แบบไร้สาย
หากคุณต้องการลอง3ºเพียงแค่ค้นหา "dup2" ทางออนไลน์มันเป็นการเรียกของระบบ
ในการดูคอนโซลของอุปกรณ์ iOS ของคุณใน Safari บน Mac ของคุณ (เห็นได้ชัดว่า Mac เท่านั้น):
Safari's Inspector จะปรากฏขึ้นเพื่อแสดงคอนโซลสำหรับอุปกรณ์ iOS ของคุณ
อีกทางเลือกหนึ่งคือคุณสามารถใช้เครื่องมือบันทึกบนหน้าจอเช่นทิกเกอร์ล็อกเพื่อดูบันทึกโดยไม่ต้องเข้าถึงคอนโซล (สะดวก)
Utilities/Console.app
หรือไม่?