You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FunC中调试TON智能合约,实现日志打印与变量导出?

在FunC中实现类似console.log的调试功能

当然可行,FunC提供了几种实用方式实现调试日志和变量追踪,帮你排查合约bug:

  • 使用内置LOG指令直接打印
    FunC内置的LOG指令可以输出整数、slice等类型的值到合约执行日志,是最接近console.log的调试方式。示例代码:

    ;; 打印整数变量
    var user_balance = load_uint(ctx.data, 64);
    LOG(user_balance);
    
    ;; 打印字符串调试信息
    LOG("entering transfer method");
    

    在本地节点、TON Labs Sandbox等测试环境执行合约时,你可以捕获这些日志输出,追踪关键位置的变量值和执行流程。

  • 临时存储调试变量到合约状态
    若需要查看复杂状态数据,可临时将变量写入合约持久化存储,或添加临时读取方法获取变量值:

    ;; 示例:临时存储调试变量到合约数据区
    var debug_result = calculate_some_value();
    ;; 将变量存入合约数据(上线前务必删除这段代码)
    set_data(begin_cell().store_uint(debug_result, 64).end_cell());
    
    ;; 或者添加临时get方法,用于外部查询
    get method get_debug_result() returns (int res) {
      res = debug_result;
    }
    

    之后通过合约查询工具(如toncli的get data命令)或测试脚本调用该方法,就能获取调试变量的值。

  • 结合测试框架输出调试信息
    编写合约测试用例时(比如用func-js、toncli测试工具),可在测试脚本中打印合约方法返回值、合约状态等信息辅助定位问题。示例JavaScript测试代码:

    const result = await contract.methods.myMethod().call();
    console.log("Method result:", result);
    

内容的提问来源于stack exchange,提问作者talkol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:45:39