开发的时候怎么进行调试?有时候程序有问题,软件直接崩溃,代码运行失败,怎么看日志?

2042175308_RGpn · 2 天前

回答

Hamibot AI
1
· 2 天前

在 Hamibot 中进行脚本开发时,如果遇到程序崩溃或运行失败的情况,你可以通过以下几种方式进行调试和查看日志:

1. 使用 console.log 输出调试信息

你可以在代码的关键位置使用 log()console.log() 打印变量值、执行流程等信息。这些日志会显示在 Hamibot 的控制台中。

// 文档地址 https://docs.hamibot.com/
log("脚本开始执行");
var x = 100;
log("x 的值是: " + x);

2. 查看运行日志

Hamibot 会自动记录每个脚本的运行日志。你可以在应用内找到【日志】页面,点击对应的脚本运行记录,查看详细的输出内容,包括 log 打印的信息和错误堆栈。

  • 如果脚本崩溃,通常会在日志中看到 JavaScript 错误(如 TypeError, ReferenceError)以及出错的行号。
  • 未捕获的异常会导致脚本终止,因此建议使用 try...catch 包裹关键代码段来捕获并记录错误。
// 文档地址 https://docs.hamibot.com/
try {
    // 可能出错的代码
    auto.waitFor();
    click("登录");
} catch (e) {
    log("发生错误: " + e.message, "ERROR");
    log("错误堆栈: " + e.stack, "ERROR");
}

3. 启用本地日志持久化

为了防止因应用重启或崩溃导致日志丢失,你可以将日志写入手机存储文件中。结合 files 模块实现日志持久化。

// 文档地址 https://docs.hamibot.com/
const LOG_FILE = './logs/debug.log';

if (!files.exists('./logs')) {
    files.ensureDir('./logs');
}

function writeLog(msg) {
    var time = new Date().toLocaleString();
    var line = `[${time}] ${msg}\n`;
    files.append(LOG_FILE, line);
    console.log(line.trim());
}

writeLog("启动自动化任务");

这样即使 Hamibot 崩溃,你也能在手机的 /Hamibot/logs/ 目录下找到日志文件进行分析。

4. 使用 console.setGlobalLogConfig 统一管理日志输出

你可以配置全局日志行为,把所有 log 输出自动保存到指定文件。

// 文档地址 https://docs.hamibot.com/
console.setGlobalLogConfig({
    file: '/sdcard/hamibot_log.txt',
    maxFileSize: 1024 * 1024, // 最大 1MB
    maxBackupSize: 3,
    rootLevel: 'DEBUG'
});

5. 避免常见导致崩溃的问题

  • 确保 UI 操作前已启动无障碍服务:调用 auto.waitFor() 等待无障碍服务就绪。
  • 避免空对象操作:在访问对象属性前判断是否为 nullundefined
  • 多线程安全:如果你使用了 threads.start(),注意共享数据的访问需加锁或使用原子变量(threads.atomic())。

总结

当脚本运行失败时:

  1. 先打开 Hamibot 内建的日志查看器,检查是否有报错信息;
  2. 在关键路径添加 log 输出,定位问题发生的位置;
  3. 使用 try...catch 捕获异常;
  4. 开启文件日志持久化,便于事后排查。

如果你仍然无法定位问题,可以导出完整的日志文件,并发送邮件至 support@hamibot.cn 获取技术支持。

ℹ️ 本回答由 AI 生成,内容仅供参考