问答中心分类: IOS如何从 iOS 模拟器获取控制台日志?
0
匿名用户 提问 1小时 前

如果我不在 Xcode 中测试应用程序,我想看看 iOS 模拟器中会发生什么。
例如,如果我在 Safari 模拟器中打开一个链接,请查看控制台中发生的情况,或者如果我安装了一个 Web 应用程序,请查看我在控制台中按下的链接。
我怎样才能做到这一点?
我想在 Xcode 或终端中看到它,但如果我需要使用其他软件,这不是问题。

Dave Jarvis 回复 1小时 前

也可以看看:stackoverflow.com/a/29310542/59087

14 Answers
0
Ben Jackson 回答 1小时 前

您可以通过桌面 Safari 查看 iOS 模拟器的控制台。它类似于您使用桌面 Safari 查看物理 iOS 设备控制台的方式。
每当模拟器运行并打开网页时,桌面 safari 的“开发”菜单下都会有一个选项,可让您看到 iOS 模拟器控制台:
开发 -> iPhone 模拟器 ->网站名称

Julian D. 回复 1小时 前

请注意,您需要运行 iOS >= 6 的设备或模拟器。您可能还必须在 iOS 上启用 Web Inspector 支持(设置应用程序 > Safari > 高级)。

Matt Jensen 回复 1小时 前

看起来现在只是:开发>模拟器>(你的模拟器名称)

Zeth 回复 1小时 前

我必须先打开模拟器,然后重新启动 Safari 才能获得此答案描述的选项。但后来它就像一个魅力。

Maximiliano Guerra 回复 1小时 前

这是唯一对我有用的。您还必须首先启用该开发菜单,然后转到:首选项 > 高级 > [检查] 在菜单栏中显示开发菜单。

0
Mark Bridges 回答 1小时 前

模拟器中有一个选项可以打开console

Debug > Open System Log

或使用

keyboard shortcut: ⌘/
模拟器菜单截图

0
viteinfinite 回答 1小时 前

iOS 8 和 iOS 9
在 iOS 8 和 iOS 9 下,这个位置现在是:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

因此,以下将起作用:

tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log

DEVICE_CODE可以通过以下终端命令找到值:

instruments -s devices
neilco 回复 1小时 前

要查找设备标识符:在 Xcode 中,单击 Windows &gt; Devices。设备和标识符将显示在右侧窗格中。

viteinfinite 回复 1小时 前

你可以输入instruments -s devices在控制台中

mharper 回复 1小时 前

s/控制台/终端窗口/

rustyMagnet 回复 1小时 前

这对我不起作用。xcrun simctl spawn booted log stream --level=debug | grep App_Debug_String工作。

Martin Braun 回复 1小时 前

@viteinfiniteinstruments找不到相关命令。哪里instruments位于?

0
russbishop 回答 1小时 前

你不应该依赖instruments -s.从命令行使用模拟器的官方支持工具是xcrun simctl.
可以通过以下方式找到设备的日志目录xcrun simctl getenv booted SIMULATOR_LOG_ROOT.即使位置发生变化,这也始终是正确的。
现在事情正在发展os_log在主机 Mac 上打开 Console.app 更容易。启动的模拟器应该在左侧显示为日志源,就像物理设备一样。您还可以在启动的模拟器中运行日志命令:

# os_log equivalent of tail -f
xcrun simctl spawn booted log stream --level=debug

# filter log output
xcrun simctl spawn booted log stream --predicate 'processImagePath endswith "myapp"'
xcrun simctl spawn booted log stream --predicate 'eventMessage contains "error" and messageType == info'

# a log dump that Console.app can open
xcrun simctl spawn booted log collect

# open location where log collect will write the dump
cd `xcrun simctl getenv booted SIMULATOR_SHARED_RESOURCES_DIRECTORY`

如果您想在模拟器中使用带有网页的 Safari 开发者工具(包括 JS 控制台):启动其中一个模拟器,打开 Safari,然后在 Mac 上转到 Safari,您应该会在菜单中看到 Simulator。
您可以在模拟器中打开一个 URL,方法是将其从 Safari 地址栏中拖放到模拟器窗口中。你也可以使用xcrun simctl openurl booted <url>.

Michael McGuire 回复 1小时 前

从 Xcode 9.3、iOS 11 开始,这是现在的正确答案。其他答案中提到的位置不再正确。

tboyce12 回复 1小时 前

这适用于 Xcode 版本 10.1 (10B61)、iOS 12.1 模拟器。使用它在 Emacs 中查看 iOS 应用程序控制台输出。其他答案过去有效,但不再有效。

Shmarkus 回复 1小时 前

对我来说,起作用的是顺序(我在模拟器之前打开了 Safari,因此菜单项没有出现在 Safari 中)!

Hjulle 回复 1小时 前

您在哪里找到“谓词”标志的文档?

russbishop 回复 1小时 前

macOS 11 和 iOS 14 模拟器的新功能:log help predicates会给你更多的信息。谓词格式遵循 NSPredicate。

rustyMagnet 回复 1小时 前

如果您不能使用,这是很长一段时间内的最佳答案idevicesyslog用模拟器。

ch271828n 回复 1小时 前

xcrun simctl spawn booted log stream --level=debug为我工作!其他答案,例如 system.log 确实不是显示我的应用程序的日志

Victor Engel 回复 1小时 前

我已经开始在 Swift 中使用 Logger 来记录信息消息。我在 Console.app 中没有看到它们。我看到的是我在启动应用程序时正在运行的模拟器的一些系统事件。如何查看这些 Logger 信息消息?是否有解释如何执行此操作的文件?

0
yoAlex5 回答 1小时 前

[iOS 记录器]
您可以使用ConsoleMac 上的应用程序(在设备中选择您的设备)以查看使用发送的日志消息NSLog,os_log,Logger(您不会看到来自print功能)。
另请检查(操作 -&gt; 包括<Info/Debug>消息)
在此处输入图像描述
请注意,如果您想查看来自WebView(UIWebView或者WKWebView) 你应该使用Safary -> Develop -> device
[查找崩溃日志]

Lonely 回复 1小时 前

cmd then space bar类型 ”Console“ 按enter.顺便提一句。这应该是今天的正确答案。

Martin Braun 回复 1小时 前

与 Android 上的 logcat 相比,这是获取模拟器所有日志的唯一真正解决方案。