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

如何在VS Code中监控递归深度?解决递归JSON转换调试问题

在VS Code中监控递归深度的方法

1. 手动添加递归深度计数器

在递归函数里新增一个默认参数(比如depth=0),每次递归调用时传入depth+1,调试时直接监控这个变量:

def convert_to_json(obj, depth=0):
    # 调试时可直接在变量面板查看depth
    if isinstance(obj, list):
        return [convert_to_json(item, depth+1) for item in obj]
    elif isinstance(obj, dict):
        return {k: convert_to_json(v, depth+1) for k, v in obj}
    elif isinstance(obj, CustomClass):
        return convert_to_json(obj.to_dict(), depth+1)
    else:
        return obj

调试时在VS Code的变量面板就能看到depth的实时值,右键将其添加到监视面板还能固定跟踪。

2. 通过调用栈查看递归深度

调试暂停时,左侧的调用栈面板会显示所有当前活跃的递归调用,每一行对应一层递归,行数就是当前的递归深度。比如面板里有8行convert_to_json的调用记录,就说明当前递归深度为8。

3. 无需修改代码的自动计算方式

如果不想改动现有代码,在VS Code的调试控制台中执行以下表达式,每次暂停时就能得到当前递归深度:

import inspect
len([frame for frame in inspect.stack() if frame.function == 'convert_to_json'])

注意第一次执行需要先导入inspect模块。

递归逻辑问题排查小技巧

  • 若深度异常增长,优先检查是否存在循环引用(比如字典中的值引用了字典本身),这会触发无限递归。
  • 在递归函数的返回条件处设置断点,确认是否在该退出递归的节点正确返回了结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:02:02