Read this manual in English

游戏和系统日志

游戏日志保存了引擎的所有输出, 包括原生扩展和脚本代码上的输出. 用 print()pprint() 函数就能在日志里留下游戏输出. 可以使用原生扩展 dmLog 下的函数读写日志文件. 各种文本阅读编辑器都能打开日志文件.

系统日志是由操作系统提供的, 也许会对调试游戏有所帮助. 系统日志可以记录应用崩溃时的调用堆栈和内存不足等信息.

游戏日志只会在 debug 模式的编译版本中出现. 发布版本会去掉所有日志输出.

用编辑器查看游戏日志

当在编辑器本地或者连接了 mobile 开发版应用 运行游戏时, 所有日志输出都能做编辑器控制台看到:

Editor 2

用控制台查看游戏日志

当使用控制台启动游戏时, 日志文件也会打印在当前控制台上. 在 Windows 和 Linux 控制台上直接打游戏可执行文件名即可. 在 macOS 控制台上要打 .app 文件里面的游戏引擎名:

$ > ./mygame.app/Contenst/MacOS/mygame

不同平台的日志读取

HTML5

绝大多数浏览器都提供了显示日志输出的控制台.

  • Chrome - 菜单 > 更多工具 > 开发者工具
  • Firefox - 工具 > 网络开发者 > 网络控制台
  • Edge
  • Safari - 开发 > 显示JavaScript控制台

Android

可以使用 Android Debug Bridge (ADB) 工具来查看游戏和系统日志.

adb 命令行工具是一个多功能易使用的用来与 Android 设备进行交互的工具. 可以在 Mac, Linux 或者 Windows 上下载 Android SDK Platform-Tools 来安装 adb.

下载 Android SDK Platform-Tools 地址: https://developer.android.com/studio/releases/platform-tools. adb 工具就在 /platform-tools/ 里. 或者, 也通过各个平台的软件包管理器下载安装.

Ubuntu Linux 上:

$ sudo apt-get install android-tools-adb

Fedora 18/19 上:

$ sudo yum install android-tools

macOS (Homebrew) 上

$ brew cask install android-platform-tools

通过如下代码让 adb 通过电脑 USB 与 Android 设备进行连接:

$ adb devices
List of devices attached
31002535c90ef000    device

如果连接不上, 确保在 Android 设备上开启了 USB debugging. 在设备 设置 里找 开发者选项 (或称 开发选项).

Enable USB debugging

工具安装好之后, 通过 USB 连接你的设备, 启动控制台, 输入:

$ cd <path_to_android_sdk>/platform-tools/
$ adb logcat

设备会把所有日志信息打印在当前控制台上, 包含游戏输出信息.

要想只查看 Defold 输出的日志信息, 可以这么输入:

$ cd <path_to_android_sdk>/platform-tools/
$ adb logcat -s defold
--------- beginning of /dev/log/system
--------- beginning of /dev/log/main
I/defold  ( 6210): INFO:DLIB: SSDP started (ssdp://192.168.0.97:58089, http://0.0.0.0:38637)
I/defold  ( 6210): INFO:ENGINE: Defold Engine 1.2.50 (8d1b912)
I/defold  ( 6210): INFO:ENGINE: Loading data from:
I/defold  ( 6210): INFO:ENGINE: Initialised sound device 'default'
I/defold  ( 6210):
D/defold  ( 6210): DEBUG:SCRIPT: Hello there, log!
...

iOS

可以使用 控制台工具 读取游戏和系统日志. 可以使用 LLDB 调试器连接设备上运行的游戏. 调试前确保设备上存有该应用的 “Apple Developer Provisioning Profile”. 从编辑器的打包对话框那里提供档案文件 (只能在 macOS 平台上打包 iOS 应用).

需要一个叫做 ios-deploy 的工具才能进行调试. 命令如下:

ios-deploy --debug --bundle <path_to_game.app> # 注意: 不是 .ipa 文件

它会把应用安装到设备上, 启动应用并且把 LLDB 调试器连接到应用上. 如果不熟悉 LLDB, 请参考 LLDB 基础教程.

从日志文件中读取日志信息

如果你在 game.project 文件里打开了 Write Log 项, 所有游戏输出都会被记录到硬盘上, 保存为 “log.txt” 文件. 下面介绍了从设备上获取日志文件的方法:

iOS
把设备连接到安装有 macOS 和 Xcode 的电脑上.

启动 Xcode 选择 Window ▸ Devices and Simulators.

在列表中选择你的设备, 然后在 Installed Apps 列表中选择你的游戏应用.

点击列表下方的齿轮图标选择 Download Container....

download container

容器被下载解压之后就可以在 Finder 中看到了. 右键单击容器选择 Show Package Content. 找到 “log.txt”, 一般位于 “AppData/Documents/”.

Android
“log.txt” 的获取取决于操作系统版本和制造商. 这里有一个简单的 步骤教程.