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

如何在堆栈跟踪中打印变量值?无控制台访问权限场景

解决方法

方法一:针对特定代码块添加异常捕获与日志记录

在调用os.chdir的地方包裹try-except块,捕获异常时将变量值写入日志文件,同时保留原堆栈跟踪:

import os
import logging

# 配置日志输出到文件
logging.basicConfig(filename='app_error.log', level=logging.ERROR, format='%(asctime)s - %(message)s')

try:
    os.chdir(directoryName)
except Exception as e:
    # 把变量值写入日志
    logging.error(f"执行os.chdir失败,directoryName的值为: '{directoryName}'")
    # 重新抛出异常,保留原堆栈信息
    raise

方法二:全局异常钩子记录变量

通过自定义全局异常处理函数,捕获所有未处理的异常,自动查找并记录相关变量值:

import os
import sys
import logging
import inspect

logging.basicConfig(filename='app_error.log', level=logging.ERROR, format='%(asctime)s - %(message)s')

def custom_exception_handler(exc_type, exc_value, exc_traceback):
    # 遍历栈帧,查找directoryName变量
    frame = inspect.currentframe().f_back
    while frame:
        if 'directoryName' in frame.f_locals:
            dir_val = frame.f_locals['directoryName']
            logging.error(f"捕获异常,directoryName的值为: '{dir_val}'")
            break
        frame = frame.f_back
    # 调用默认异常处理,保留原始堆栈跟踪
    sys.__excepthook__(exc_type, exc_value, exc_traceback)

# 替换默认异常钩子
sys.excepthook = custom_exception_handler

# 原执行代码
os.chdir(directoryName)

两种方法都会把directoryName的具体值写入日志文件,你可以通过查看日志文件获取变量内容,同时原有的堆栈跟踪信息也会被保留,方便定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:20:45