iOS(iPhone、iPad、iPodTouch)查看实时控制台日志终端
Posted
技术标签:
【中文标题】iOS(iPhone、iPad、iPodTouch)查看实时控制台日志终端【英文标题】:iOS (iPhone, iPad, iPodTouch) view real-time console log terminal 【发布时间】:2011-11-08 19:40:08 【问题描述】:有没有办法查看实时控制台日志,可以实时查看NSLog等调试信息,比如adb logcat?
【问题讨论】:
你是说你想要一些相当于Utilities/Console.app
的ios?
objective c iphone : can we view console log on device 的可能重复项
【参考方案1】:
Apple 在 Technical Q&A QA1747 Debugging Deployed iOS Apps for Xcode 6 中记录的解决方案是:
-
从 Xcode 菜单中选择窗口 -> 设备。
在左栏中选择设备。
单击右侧面板左下方的上三角以显示设备控制台。
【讨论】:
在我看来,这是最简单的解决方案。 在 Xcode 6.4 中,我看到一个按钮显示“查看设备日志”,但它给了我崩溃日志。我看不到获取控制台日志的方法。 我添加了一个带有上三角图标的屏幕截图。print
语句不记录,只记录stdout
。请改用NSLog
。或者可以将stdout
重定向到添加了一些代码的文件。崩溃会被记录下来,并且可以使用“查看设备日志”按钮进行访问。
此按钮已在 xCode 9.3 中停用。它现在有一个“Console.app”按钮,这更有意义。【参考方案2】:
两种选择:
libimobiledevice 可以通过homebrew 安装并且效果很好。它的idevicesyslog
工具的工作原理与deviceconsole
(下图)类似,它支持无线查看设备的系统日志(!)
我已经写了更多关于 on Tumblr tl;dr:
brew install libimobiledevice
idevice_id --list // list available device UDIDs
idevicesyslog -u <device udid>
设备通过 USB 连接或在本地无线网络上可用。
(保留历史记录,从 2013 年开始:)来自 rpetrich 的deviceconsole 是一个比上面的 ideviceconsole 少得多的古怪解决方案。我的fork of it 在开箱即用的 Xcode 5 中构建和运行,构建操作会将二进制文件安装到 /usr/local/bin
以方便使用。
作为一个额外有用的信息,我以以下样式使用它,这样可以很容易地在我的 shell 历史记录中找到我想要的设备,并删除deviceconsole
打印出来的不必要的>
行。
deviceconsole -d -u <device UDID> | uniq -u && echo "<device name>"
【讨论】:
感谢这篇文章。这正是我想要的。我迫不及待想将 iOS 添加到我的 GUI 移动 LogCat 工具中:github.com/yepher/LogCat 这太棒了 - 编译和运行花了 2 分钟。这应该是公认的答案。 这是一个不错的解决方案。只是想补充一点,该集合仍然适用于 iOS8(应该如此!) @BugaBuga 确保您使用的是最新的libimobiledevice
。 (有线和无线日志查看在我的 10.11 上的 Mac 和我在 iOS 10.2 上的 iPhone 上工作)
github.com/libimobiledevice/libimobiledevice/issues/356。使用:brew install --HEAD libimobiledevice
。为我工作。【参考方案3】:
编辑:请使用@cbowns 解决方案 - deviceconsole 与 iOS9 兼容并且更易于使用。
这是一个开源程序,可以在终端中显示iDevice的系统日志(方式类似于tail -F)。不需要越狱,并且输出完全可以grep'able,因此您可以过滤以仅查看程序的输出。该解决方案的特别之处在于,无论应用程序是否在 XCode 中以调试模式启动,您都可以查看日志。
方法如下:
从我的 github 帐户获取 Mac OS X 的 libimobiledevice 二进制文件 https://github.com/benvium/libimobiledevice-macosx/zipball/master
按照此处的安装说明进行操作: https://github.com/benvium/libimobiledevice-macosx/blob/master/README.md
连接您的设备,打开 Terminal.app 并输入:
idevicesyslog
向上弹出设备系统日志的实时显示。
由于它是一个控制台应用程序,您可以使用 unix 命令过滤日志,例如 grep
例如,查看来自特定应用的所有日志消息:
idevicesyslog | grep myappname
摘自我的博客http://pervasivecode.blogspot.co.uk/2012/06/view-log-output-of-any-app-on-iphone-or.html
【讨论】:
这似乎不适用于 iOS 模拟器。真可惜。No device found, is it plugged in?
无法在iOS10上运行。 "usbmuxd_send: Error -1 when sent: Broken pipe" 如何解决?
当我在没有 sudo 的情况下运行 idevicesys 时,我收到一个关于“无法启动服务 com.apple.syslog_relay”的神秘错误。也许这取决于你如何安装它或其他东西。
如果它不适合您,请执行此操作...brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
【参考方案4】:
只需在 mac osX 上打开应用程序 Console.app
。
您可以在Applications
> Utilities
> Console
下找到它。
在应用程序的左侧列出了您连接的所有设备。
【讨论】:
这是一个很好的解决方案。我可以使用搜索功能基本上为我的设备“grep”实时/“现在”日志。 太棒了!这应该是正确的答案。 您甚至可以通过应用进程名称、日期和时间等各种过滤器来搜索日志。【参考方案5】:试用免费软件iOS Console。只需下载、启动、连接您的设备 - 瞧!
【讨论】:
这很有趣,但如果我有多个连接到 Mac,它不会让我选择查看控制台日志的设备。 如此简单,并且在 iOS 12 上运行良好,我很沮丧地知道日志记录对于开发人员来说应该是多么简单并最终到了这里。谢谢彼得 为什么不Console.app
[macOS 自带的]?【参考方案6】:
这可能就是您要查找的内容:Xcode Organizer
【讨论】:
是的...但由于某种原因,Xcode Organizer 上的控制台不太实时,因为它位于 GUI 窗口内。我希望有一种方法可以直接调用设备上的 shell 到 tail -f设备 > 终端输出在 iPhone 配置应用上
这里:http://support.apple.com/kb/DL1465
【讨论】:
该链接不再有效。我相信该应用程序的更新名称是 Apple Configurator,可在此处找到:itunes.apple.com/us/app/apple-configurator/id434433123?mt=12 但是,它是 OS X 10.10+。 @ThomasW:不幸的是,Apple Configurator 似乎无法像 iPhone 配置实用程序那样查看设备日志。 确实如此。只需从菜单中安装自动化工具。 krypted.com/iphone/…【参考方案8】:您有三个选择:
Xcode 管理器 使用 syslogd + openSSH 的越狱设备 使用 dup2 将所有 STDERR 和 STDOUT 重定向到一个文件,然后“tail -f”该文件(最后一个更像是模拟器,因为您遇到了在设备上拖尾文件的相同问题)。所以,要获得 2º,您只需要从 Cydia 安装 syslogd 和 OpenSSH,之后需要重新启动才能让 syslogd 运行;现在只需打开一个到您设备的 ssh 会话(通过终端或 windows 上的 putty),然后输入“tail -f /var/log/syslog”。好了,无线实时系统日志。
如果您想尝试 3º,只需在线搜索“dup2”,这是一个系统调用。
【讨论】:
【参考方案9】:要在 Mac 上的 Safari 中查看 iOS 设备的控制台(显然仅限于 Mac):
-
在您的 iOS 设备上,转到“设置”>“Safari”>“高级”并打开 Web Inspector
在您的 iOS 设备上,在 Safari 中加载您的网页
将您的设备直接连接到您的 Mac
在您的 Mac 上,如果您尚未激活 Safari 的“开发者”菜单,请转到“首选项”>“高级”,然后选择“在菜单栏中显示开发者菜单”
在您的 Mac 上,转至开发 > [您的 iOS 设备名称] > [您的网页]
Safari 的 Inspector 将显示一个适用于您 iOS 设备的控制台。
【讨论】:
我们可以看到 Safari 控制台日志而不是应用程序的日志。 这确实适用于模拟器...尚未在实际设备上尝试过。【参考方案10】:作为替代方案,您可以使用 屏幕上 日志记录工具(例如 ticker-log)来查看日志,而无需(方便)访问控制台。
【讨论】:
以上是关于iOS(iPhone、iPad、iPodTouch)查看实时控制台日志终端的主要内容,如果未能解决你的问题,请参考以下文章
检测 iPhone/iPad/iPod touch 的颜色?
设备要求 - iphone ipodtouch -- 不是 ipad?