首页 文章

如何从iOS模拟器获取控制台日志?

提问于
浏览
199

如果我没有在Xcode中测试应用程序,我想看看iOS模拟器中会发生什么 .

例如,如果我在Safari模拟器中打开一个链接,看看控制台中发生了什么,或者如果我安装了一个web-app,请查看我在控制台中按下的链接 .

我怎样才能做到这一点?

我想在Xcode或终端中看到它,但如果我需要使用另一部分软件,这不是问题 .

9 回答

  • 98

    iOS模拟器>菜单栏>调试>打开系统日志


    老办法:

    iOS模拟器将其日志直接打印到stdout,因此您可以看到与系统日志混淆的日志 .

    打开终端并输入: tail -f /var/log/system.log

    然后运行模拟器 .

    编辑:

    这停止了Mavericks / Xcode 5的工作 . 现在您可以在自己的文件夹中访问模拟器日志: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

    你可以使用Console.app看到这个,或者只是做一个尾巴(例如iOS 7.0.3 64位):

    tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log

    编辑2:

    它们现在位于 ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

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

  • 7

    您可以通过桌面Safari查看iOS模拟器的控制台 . 它类似于您使用桌面Safari查看物理iOS设备的控制台的方式 .

    每当模拟器运行并打开网页时,桌面版Safari中的“开发”菜单下都会有一个选项,可让您查看iOS模拟器控制台:

    开发 - > iPhone模拟器 - >网站名称

  • 200

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

    Debug > Open System Log
    

    或使用

    keyboard shortcut: ⌘/

    Simulator menu screenshot

  • 89

    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
    
  • 245

    如果您使用的是 Swift ,请记住 println 只会打印到调试日志(显示在xCode的调试区域中) . 如果要打印到system.log,则必须像以前一样使用 NSLog .

    然后,您可以通过其菜单,Debug> Open System Log ...(cmd /)查看模拟器日志

  • 15

    你不应该依赖 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`
    

    If you want to use Safari Developer tools (including the JS console) with a webpage in the Simulator :启动其中一个模拟器,打开Safari,然后转到Mac上的Safari,你应该在菜单中看到模拟器 .

    您可以通过从Safari地址栏拖动并在模拟器窗口中拖放来在模拟器中打开URL . 你也可以使用 xcrun simctl openurl booted <url> .

  • 11

    拖尾 /var/log/system.log 对我不起作用 . 我使用 Console.app 找到了我的日志 . 他们在

    ~/Library/Logs/iOS Simulator/{version}/system.log

  • 14

    XCode > 6.0 AND iOS > 8.0 如果XCode版本> 8.0,则以下脚本有效

    我使用下面的小脚本将模拟器日志拖到系统控制台上 .

    #!/bin/sh
    sim_dir=`xcrun instruments -s | grep "iPhone 6 (8.2 Simulator)" | awk {'print $NF'} | tr -d '[]'`
    tail -f ~/Library/Logs/CoreSimulator/$sim_dir/system.log
    

    您可以将Grep中使用的模拟器类型作为参数传递 . 如上面的帖子所述,有simctl和instruments命令可以根据Xcode版本查看可供使用的模拟器类型 . 查看可用设备/模拟器列表 .

    xcrun instruments -s
    

    要么

    xcrun simctl list
    

    现在您可以将设备代码或模拟器类型作为参数传递给脚本,并将grep中的“iPhone 6(8.2模拟器)”替换为$ 1

  • 0

    我可以直接通过iOS模拟器打开日志: Debug -> Open System Log... 不确定何时引入它,因此它可能不适用于早期版本 .

相关问题