iOS (iPhone, iPad, iPodTouch) melihat terminal log konsol waktu nyata

123

Apakah ada cara untuk melihat log konsol waktu nyata untuk melihat NSLog dan pesan debug lainnya secara waktu nyata, seperti adb logcat?

Arunabh Das
sumber
1
Apakah Anda ingin mengatakan bahwa Anda menginginkan setara dengan iOS Utilities/Console.app?
BryanH

Jawaban:

155

Solusi yang didokumentasikan oleh Apple dalam Tanya Jawab Teknis QA1747 Debugging Aplikasi iOS yang Digunakan untuk Xcode 6 adalah:

  1. Pilih Window -> Devices dari menu Xcode.
  2. Pilih perangkat di kolom kiri.
  3. Klik segitiga atas di kiri bawah panel kanan untuk menampilkan konsol perangkat.

Tangkapan layar dengan segitiga atas

Marián Černý
sumber
4
Menurut saya, ini adalah solusi termudah.
Bart van Kuik
Di Xcode 6.4, saya melihat tombol bertuliskan "View Device Logs", tetapi memberi saya log crash. Saya tidak melihat cara untuk mendapatkan log konsol.
Chris Prince
4
Saya telah menambahkan tangkapan layar dengan ikon segitiga atas.
Marián Černý
1
printpernyataan tidak masuk ke log, hanya ke stdout. Gunakan NSLogsebagai gantinya. Atau dimungkinkan untuk mengarahkan stdoutke file dengan beberapa kode tambahan. Kerusakan dicatat dan dapat diakses menggunakan tombol "Lihat Log Perangkat".
Marián Černý
3
Tombol ini telah dihentikan di xCode 9.3. Sekarang memiliki tombol "Console.app", yang lebih masuk akal.
rustyMagnet
79

EDIT: Silakan gunakan solusi @cbowns - deviceconsole kompatibel dengan iOS9 dan lebih mudah digunakan.

Ini adalah program sumber terbuka yang menampilkan log sistem iDevice di Terminal (dengan cara yang mirip dengan tail -F). Tidak diperlukan jailbreak, dan keluaran sepenuhnya grep'able sehingga Anda dapat memfilter untuk melihat keluaran dari program Anda saja. Hal yang sangat baik tentang solusi ini adalah Anda dapat melihat log apakah aplikasi diluncurkan dalam mode debug dari XCode atau tidak.

Begini caranya:

Ambil biner libimobiledevice untuk Mac OS X dari akun github saya di https://github.com/benvium/libimobiledevice-macosx/zipball/master

Ikuti petunjuk pemasangan di sini: https://github.com/benvium/libimobiledevice-macosx/blob/master/README.md

Hubungkan perangkat Anda, buka Terminal.app dan ketik:

idevicesyslog

Up muncul tampilan real-time dari log sistem perangkat.

Karena itu adalah aplikasi konsol, Anda dapat memfilter log menggunakan perintah unix, seperti grep

Misalnya, lihat semua pesan log dari aplikasi tertentu:

idevicesyslog | grep myappname

Diambil dari blog saya di http://pervasivecode.blogspot.co.uk/2012/06/view-log-output-of-any-app-on-iphone-or.html

Ben Clayton
sumber
4
Sepertinya ini tidak berfungsi dengan simulator iOS. Kekecewaan. No device found, is it plugged in?
ashes999
Itu tidak dapat berfungsi di iOS10. "usbmuxd_send: Error -1 saat mengirim: Pipa rusak" Bagaimana mengatasinya?
Victor Choy
2
Ketika saya menjalankan idevicesys tanpa sudo, saya mendapatkan kesalahan samar tentang "Tidak dapat memulai layanan com.apple.syslog_relay". Mungkin itu tergantung pada bagaimana Anda menginstalnya atau sesuatu.
Bjorn Roche
Lakukan ini jika tidak berhasil untuk Anda ...brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
Akshet
77

Dua pilihan:

libimobiledevice dapat diinstal melalui homebrew dan berfungsi dengan baik. Alatnya idevicesyslogbekerja mirip dengandeviceconsole (di bawah), dan ini mendukung tampilan perangkat Anda secara nirkabel syslog (!)

Saya telah menulis lebih banyak tentang itu di Tumblr tl; dr:

brew install libimobiledevice
idevice_id --list // list available device UDIDs
idevicesyslog -u <device udid>

dengan perangkat yang terhubung melalui USB atau tersedia di jaringan nirkabel lokal.

Dari 2013: deviceconsole dari rpetrich adalah solusi yang jauh lebih wacked-out dari ideviceconsole di atas. Garpu saya membangun dan menjalankan Xcode 5 di luar kotak, dan tindakan Build akan menginstal biner ke /usr/local/binuntuk kemudahan penggunaan.

Sebagai informasi tambahan yang bermanfaat, saya menggunakannya dengan gaya berikut yang memudahkan untuk menemukan perangkat yang saya inginkan dalam riwayat shell saya dan menghapus >garis yang tidak perlu yang deviceconsoletercetak.

deviceconsole -d -u <device UDID> | uniq -u && echo "<device name>"
cbowns
sumber
Terima kasih untuk posting ini Ini persis seperti yang saya cari. Saya tidak sabar untuk menambahkan iOS ke alat LogCat
Yepher
2
Ini luar biasa - butuh 2 menit untuk mengkompilasi dan menjalankan. Ini harus menjadi jawaban yang diterima.
Nick Farina
Ini adalah solusi yang bagus. Dan hanya ingin menambahkan bahwa koleksinya masih berfungsi untuk iOS8 (sebagaimana mestinya!)
Kelly
1
@BugaBuga Pastikan Anda menggunakan yang terbaru libimobiledevice. (Tampilan log berkabel dan nirkabel berfungsi dengan Mac saya di 10.11 dan iPhone saya di iOS 10.2)
cbowns
1
github.com/libimobiledevice/libimobiledevice/issues/356 . Gunakan: brew install --HEAD libimobiledevice. Bekerja untuk saya.
rustyMagnet
21

Buka saja Aplikasi Console.appdi mac osX.

Anda dapat menemukannya di bawah Applications> Utilities> Console.

Di sisi kiri aplikasi, semua perangkat Anda yang terhubung terdaftar.

einsA
sumber
2
Ini adalah solusi yang bagus. Saya dapat menggunakan fitur Pencarian untuk pada dasarnya "grep" pada log live / "Now" untuk perangkat saya.
Rob
14

Coba Konsol iOS freeware . Cukup unduh, luncurkan, hubungkan perangkat Anda - dan voila!

Peter Gluck
sumber
1
itu menarik, tetapi tidak mengizinkan saya memilih perangkat mana untuk melihat log konsol jika saya memiliki beberapa yang terhubung ke Mac.
leolobato
sangat sederhana dan berfungsi dengan baik di iOS 12, saya menjadi frustrasi dengan mengetahui betapa sederhananya logging untuk seorang dev dan berakhir di sini. Terima kasih Peter
FreeAppl3
mengapa tidak Console.app[yang dikirimkan secara native di macOS]?
rustyMagnet
6

Ini mungkin yang Anda cari: Xcode Organizer

BryanH
sumber
Ya ... tetapi untuk beberapa alasan, Konsol di Xcode Organizer kurang real-time karena berada di dalam jendela GUI. Saya berharap ada cara untuk memanggil shell pada perangkat secara langsung ke tail -f <logfilename>
Arunabh Das
Anda hanya bisa mendapatkan shell pada perangkat jika sudah di-jailbreak.
progrmr
Terima kasih progrmr. Saya ingin menerima jawaban Anda sebagai jawaban yang benar. Bisakah Anda juga memposting tautan apa pun untuk HowTo untuk mendapatkan shell pada perangkat yang di-jailbreak? Terima kasih!!
Arunabh Das
@ArunabhDas Mohon pertimbangkan untuk mengubah jawaban yang diterima ke jawaban idevicesyslog dari Ben Clayton. Solusinya persis seperti yang saya cari untuk men-debug Pembelian Dalam Aplikasi dengan aplikasi iOS menggunakan platform CoronaSDK. Xcode Organizer lambat dan tidak praktis untuk melihat informasi log.
Anthony F
5

perangkat> keluaran terminal ada di aplikasi konfigurasi iPhone

di sini: http://support.apple.com/kb/DL1465

dapur
sumber
1
Tautan itu tidak lagi valid. Saya yakin nama aplikasi yang diperbarui adalah Apple Configurator dan tersedia di sini: itunes.apple.com/us/app/apple-configurator/id434433123?mt=12 Namun, ini adalah OS X 10.10+.
ThomasW
1
@ThomasW: Sayangnya Apple Configurator tampaknya tidak memiliki kemampuan untuk melihat log perangkat seperti yang dilakukan / dilakukan oleh iPhone Configuration Utility.
newenglander
1
Memang. Cukup instal alat otomatisasi dari menu. krypted.com/iphone/…
Sune Kjærgård
2

Anda memiliki tiga opsi:

  • Penyelenggara Xcode
  • Perangkat yang di-jailbreak dengan syslogd + openSSH
  • Gunakan dup2 untuk mengarahkan semua STDERR dan STDOUT ke sebuah file dan kemudian "tail -f" file itu (yang terakhir ini lebih merupakan hal simulator, karena Anda terjebak dengan masalah yang sama dalam membuntuti file pada perangkat).

Jadi, untuk mendapatkan yang 2º anda hanya perlu menginstal syslogd dan OpenSSH dari Cydia, restart diperlukan setelah itu untuk menjalankan syslogd; sekarang cukup buka sesi ssh ke perangkat Anda (melalui terminal atau putty di windows), dan ketik "tail -f / var / log / syslog". Dan begitulah, log sistem waktu nyata nirkabel.

Jika Anda ingin mencoba 3º hanya mencari "dup2" online, itu panggilan sistem.

fbernardo
sumber
0

Untuk melihat konsol perangkat iOS Anda di Safari pada Mac Anda (tampaknya hanya untuk Mac):

  1. Pada perangkat iOS Anda, buka Pengaturan> Safari> Lanjutan dan nyalakan Inspektur Web
  2. Di perangkat iOS Anda, muat halaman web Anda di Safari
  3. Hubungkan perangkat Anda langsung ke Mac Anda
  4. Di Mac Anda, jika Anda belum mengaktifkan menu Pengembang Safari, buka Preferensi> Lanjutan, dan pilih "Tampilkan menu Kembangkan di bilah menu"
  5. Di Mac Anda, buka Kembangkan> [nama perangkat iOS Anda]> [laman web Anda]

Safari's Inspector akan muncul menampilkan konsol untuk perangkat iOS Anda.

nick
sumber
3
kita dapat melihat log konsol safari, bukan log aplikasi.
Gamma-Point
Ini berfungsi untuk emulator ... Belum mencobanya dengan perangkat yang sebenarnya.
sketsa bahwa
0

Sebagai alternatif, Anda dapat menggunakan alat pencatatan di layar seperti ticker-log untuk melihat log tanpa harus (nyaman) akses ke konsol.

Jonathan.Brink
sumber