iOS (iPhone, iPad, iPodTouch) ดูเทอร์มินัลบันทึกคอนโซลแบบเรียลไทม์


123

มีวิธีดูบันทึกคอนโซลแบบเรียลไทม์เพื่อดู NSLog และข้อความดีบักอื่น ๆ แบบเรียลไทม์เช่น adb logcat หรือไม่


1
คุณกำลังบอกว่าคุณต้องการ iOS ที่เทียบเท่าUtilities/Console.appหรือไม่?
BryanH

คำตอบ:


155

โซลูชันที่ Apple บันทึกไว้ใน Q&A ทางเทคนิค QA1747 การดีบักแอพ iOS ที่ปรับใช้สำหรับ Xcode 6 คือ:

  1. เลือกหน้าต่าง -> อุปกรณ์จากเมนู Xcode
  2. เลือกอุปกรณ์ในคอลัมน์ด้านซ้าย
  3. คลิกสามเหลี่ยมขึ้นที่ด้านล่างซ้ายของแผงด้านขวามือเพื่อแสดงคอนโซลอุปกรณ์

สกรีนช็อตขึ้นเป็นสามเหลี่ยม


4
ในความคิดของฉันนี่เป็นทางออกที่ง่ายที่สุด
Bart van Kuik

ใน Xcode 6.4 ฉันเห็นปุ่ม "ดูบันทึกอุปกรณ์" แต่จะให้บันทึกข้อขัดข้อง ฉันไม่เห็นวิธีรับบันทึกคอนโซล
Chris Prince

4
ฉันได้เพิ่มภาพหน้าจอที่มีไอคอนสามเหลี่ยมขึ้น
MariánČerný

1
printstdoutงบไม่ได้ไปเพื่อเข้าสู่ระบบเท่านั้นที่จะ ใช้NSLogแทน หรืออาจเป็นไปได้ที่จะเปลี่ยนเส้นทางstdoutไปยังไฟล์ที่มีรหัสเพิ่มเติม ระบบจะบันทึกข้อขัดข้องและสามารถเข้าถึงได้โดยใช้ปุ่ม "ดูบันทึกอุปกรณ์"
MariánČerný

3
ปุ่มนี้เลิกใช้แล้วใน xCode 9.3 ตอนนี้มีปุ่ม "Console.app" ซึ่งเข้าท่ากว่า
rustyMagnet

79

แก้ไข: โปรดใช้โซลูชัน @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


4
ดูเหมือนว่าจะใช้ไม่ได้กับโปรแกรมจำลอง iOS คนเกียจคร้าน No device found, is it plugged in?
ashes999

ไม่สามารถทำงานบน iOS10 ได้ "usbmuxd_send: Error -1 when send: Broken pipe" แก้ยังไงครับ?
Victor Choy

2
เมื่อฉันเรียกใช้ idevicesys โดยไม่มี sudo ฉันได้รับข้อผิดพลาดที่เป็นความลับเกี่ยวกับ "ไม่สามารถเริ่มบริการ com.apple.syslog_relay" อาจจะขึ้นอยู่กับวิธีการติดตั้งหรือบางอย่าง
Bjorn Roche

ทำสิ่งนี้ถ้ามันไม่ได้ผลสำหรับคุณ ...brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
Akshet

77

สองตัวเลือก:

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>"

ขอบคุณสำหรับโพสต์นี้ มันคือสิ่งที่ฉันกำลังมองหา ฉัน
แทบ

2
ยอดเยี่ยมมาก - ใช้เวลา 2 นาทีในการรวบรวมและเรียกใช้ นี่ควรเป็นคำตอบที่ได้รับการยอมรับ
Nick Farina

นี่เป็นทางออกที่น่ารัก และแค่อยากจะเพิ่มว่าคอลเลคชันยังใช้งานได้กับ iOS8 (เท่าที่ควร!)
Kelly

1
@BugaBuga libimobiledeviceให้แน่ใจว่าคุณกำลังใช้ล่าสุด (การดูบันทึกแบบใช้สายและไร้สายใช้งานได้กับ Mac ของฉันใน 10.11 และ iPhone ของฉันบน iOS 10.2)
cbowns

1
github.com/libimobiledevice/libimobiledevice/issues/356 ใช้: brew install --HEAD libimobiledevice. ทำงานให้ฉัน
rustyMagnet

21

เพียงแค่เปิดแอปพลิเคชันConsole.appบน mac osX

คุณสามารถค้นหาได้ภายใต้Applications> >UtilitiesConsole

ทางด้านซ้ายของแอปพลิเคชันอุปกรณ์ที่เชื่อมต่อทั้งหมดของคุณจะแสดงรายการ


2
นี่เป็นทางออกที่ยอดเยี่ยม ฉันสามารถใช้คุณลักษณะการค้นหาเพื่อ "grep" บันทึกสด / "ตอนนี้" สำหรับอุปกรณ์ของฉัน
Rob

14

ลองฟรีแวร์คอนโซล iOS เพียงดาวน์โหลดเปิดตัวเชื่อมต่ออุปกรณ์ของคุณ - et voila!


1
มันน่าสนใจ แต่จะไม่ให้ฉันเลือกอุปกรณ์ที่จะดูบันทึกของคอนโซลถ้าฉันเชื่อมต่อกับ Mac หลายเครื่อง
leolobato

ง่ายมากและใช้งานได้ดีบน iOS 12 ฉันรู้สึกหงุดหงิดกับการรู้ว่าการบันทึกแบบธรรมดาควรเป็นอย่างไรสำหรับนักพัฒนาและจบลงที่นี่ ขอบคุณ Peter
FreeAppl3

ทำไมไม่Console.app[ซึ่งมาพร้อมกับ macOS] ล่ะ
rustyMagnet

6

นี่อาจเป็นสิ่งที่คุณกำลังมองหา: Xcode Organizer


ใช่ ... แต่ด้วยเหตุผลบางประการคอนโซลบน Xcode Organizer จึงเรียลไทม์น้อยลงเนื่องจากอยู่ในหน้าต่าง GUI ฉันหวังว่าจะมีวิธีเรียกเชลล์บนอุปกรณ์โดยตรงไปยัง tail -f <logfilename>
Arunabh Das

คุณจะได้รับเชลล์ในอุปกรณ์หากถูกเจลเบรคแล้วเท่านั้น
progrmr

ขอบคุณ progrmr ฉันขอยอมรับคำตอบของคุณว่าเป็นคำตอบที่ถูกต้อง คุณช่วยโพสต์ลิงค์สำหรับ HowTo เกี่ยวกับการรับเชลล์บนอุปกรณ์เจลเบรคได้ไหม ขอบคุณ !!
Arunabh Das

@ArunabhDas โปรดพิจารณาเปลี่ยนคำตอบที่ยอมรับเป็นคำตอบ idevicesyslog จาก Ben Clayton โซลูชันของเขาคือสิ่งที่ฉันกำลังมองหาเพื่อแก้ไขข้อบกพร่องการซื้อในแอปด้วยแอป iOS โดยใช้แพลตฟอร์ม CoronaSDK Xcode Organizer ทำงานช้าและยุ่งยากในการดูข้อมูลบันทึก
Anthony F

5

อุปกรณ์> เอาต์พุตเทอร์มินัลอยู่ในแอพกำหนดค่า iPhone

ที่นี่: http://support.apple.com/kb/DL1465


1
ลิงก์นั้นใช้ไม่ได้อีกต่อไป ฉันเชื่อว่าชื่อที่อัปเดตของแอปคือ Apple Configurator และมีให้ที่นี่: itunes.apple.com/us/app/apple-configurator/id434433123?mt=12อย่างไรก็ตามเป็น OS X 10.10+
ThomasW

1
@ThomasW: น่าเสียดายที่ Apple Configurator ดูเหมือนจะไม่มีความสามารถในการดูบันทึกอุปกรณ์เหมือนที่ยูทิลิตีการกำหนดค่า iPhone ทำ / ทำ
newenglander

1
มัน. เพียงติดตั้งเครื่องมืออัตโนมัติจากเมนู krypted.com/iphone/…
Sune Kjærgård

2

คุณมีสามทางเลือก:

  • Xcode Organizer
  • อุปกรณ์ Jailbroken พร้อม syslogd + openSSH
  • ใช้ dup2 เพื่อเปลี่ยนเส้นทาง STDERR และ STDOUT ทั้งหมดไปยังไฟล์จากนั้น "tail -f" ไฟล์นั้น (อันสุดท้ายนี้เป็นโปรแกรมจำลองมากกว่าเนื่องจากคุณติดปัญหาเดียวกันในการปรับแต่งไฟล์บนอุปกรณ์)

ดังนั้นเพื่อให้ได้2ºคุณเพียงแค่ต้องติดตั้ง syslogd และ OpenSSH จาก Cydia ให้รีสตาร์ทที่จำเป็นหลังจากนั้นเพื่อให้ syslogd ทำงาน ตอนนี้เพียงเปิดเซสชัน ssh ไปยังอุปกรณ์ของคุณ (ผ่านเทอร์มินัลหรือสีโป๊วบน windows) แล้วพิมพ์ "tail -f / var / log / syslog" บันทึกระบบเรียลไทม์แบบไร้สาย

หากคุณต้องการลอง3ºเพียงแค่ค้นหา "dup2" ทางออนไลน์มันเป็นการเรียกของระบบ


0

ในการดูคอนโซลของอุปกรณ์ iOS ของคุณใน Safari บน Mac ของคุณ (เห็นได้ชัดว่า Mac เท่านั้น):

  1. บนอุปกรณ์ iOS ของคุณไปที่การตั้งค่า> Safari> ขั้นสูงและเปิด Web Inspector
  2. บนอุปกรณ์ iOS ของคุณให้โหลดหน้าเว็บของคุณใน Safari
  3. เชื่อมต่ออุปกรณ์ของคุณโดยตรงกับ Mac ของคุณ
  4. บน Mac ของคุณหากคุณยังไม่ได้เปิดใช้งานเมนูนักพัฒนาของ Safari ให้ไปที่การตั้งค่า> ขั้นสูงแล้วเลือก "แสดงเมนูการพัฒนาในแถบเมนู"
  5. บน Mac ของคุณไปที่พัฒนา> [ชื่ออุปกรณ์ iOS ของคุณ]> [หน้าเว็บของคุณ]

Safari's Inspector จะปรากฏขึ้นเพื่อแสดงคอนโซลสำหรับอุปกรณ์ iOS ของคุณ


3
เราสามารถดูบันทึกคอนโซลซาฟารีไม่ใช่บันทึกของแอป
Gamma-Point

สิ่งนี้ใช้ได้กับโปรแกรมจำลอง ... ยังไม่ได้ลองใช้กับอุปกรณ์จริง
ร่าง

0

อีกทางเลือกหนึ่งคือคุณสามารถใช้เครื่องมือบันทึกบนหน้าจอเช่นทิกเกอร์ล็อกเพื่อดูบันทึกโดยไม่ต้องเข้าถึงคอนโซล (สะดวก)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.