Azure R Notebook内核崩溃如何获取日志及激活Jupyter调试器?
Jupyter Notebook调试器与日志问题解决方案
一、如何在Jupyter Notebook中激活调试器或访问日志?
激活调试器
分两种场景给你说明:
- Python Notebook:
- 内置快速调试:如果代码运行出错,直接在新单元格输入
%debug,就能进入交互式调试器,查看变量、逐行执行代码排查问题。 - 可视化调试(Jupyter Lab):打开左侧边栏的「调试」面板,点击代码行号左侧添加断点,再点击「运行并调试」按钮,就能可视化步进调试代码。
- 手动触发调试:在代码里插入
import pdb; pdb.set_trace(),运行到这行时会自动进入调试模式。
- 内置快速调试:如果代码运行出错,直接在新单元格输入
- R Notebook:
- 函数级调试:给目标函数添加调试标记,比如
debug(ggplot2::ggplot),之后调用该函数时会进入交互式调试环境,输入n执行下一行、c继续运行、q退出调试。 - 错误触发调试:设置
options(error = recover),当代码抛出错误时,会弹出调用栈选择界面,让你查看每个层级的变量和代码细节。
- 函数级调试:给目标函数添加调试标记,比如
访问日志
- Jupyter服务器日志:启动Notebook时,终端会实时输出日志。如果需要更详细的调试信息,用
jupyter notebook --debug命令启动,终端会打印所有服务器与内核的交互细节。 - 内核日志:内核运行日志存放在系统特定目录中:
- Python内核:Linux/macOS一般在
~/.local/share/jupyter/runtime/,Windows在%APPDATA%\jupyter\runtime\,文件名带kernel-前缀。 - R内核:可以在Notebook单元格运行
system("find ~ -name 'kernel-*.log' 2>/dev/null", intern=TRUE),快速定位日志文件路径。
- Python内核:Linux/macOS一般在
二、Azure Notebooks中R内核崩溃的日志获取与调试方案
获取崩溃日志
针对Azure托管的Notebook环境,你可以通过这些方式获取日志:
- Notebook终端日志:点击顶部菜单栏的「终端」选项,打开新终端后,这里会显示Jupyter服务器和内核启动、运行的实时日志,内核崩溃时的错误堆栈通常会在这里输出。
- R内核运行日志:在Notebook单元格执行以下命令,查找并查看内核日志内容:
# 查找最新的内核日志路径 log_paths <- system("ls ~/.local/share/jupyter/runtime/kernel-*.log", intern=TRUE) # 打印日志内容 cat(readLines(log_paths[length(log_paths)]), sep="\n") - Azure平台日志:如果是Azure Machine Learning托管的Notebook(当前Azure Notebooks多整合至此),可在Azure门户对应工作区的「监控」->「日志」中,筛选内核相关条目,查看崩溃的系统级原因。
激活调试器排查崩溃
针对你遇到的ggplot2加载导致内核崩溃的问题,试试这些调试方法:
- 追踪包加载过程:在加载
ggplot2前给其加载函数加调试标记,监控每一步执行:
运行后会进入调试模式,逐行执行加载代码,观察哪一步触发崩溃。# 给ggplot2的加载函数添加调试 debug(ggplot2:::.onLoad) # 重新加载包 library(ggplot2) - 获取错误调用栈:在单元格开头添加错误追踪设置,崩溃前会输出详细调用栈:
即使内核崩溃,终端也会留下崩溃前的调用栈信息,帮你定位是ggplot2的哪个依赖包出了问题。options(error = traceback) # 运行你的代码 library(ggplot2) # 后续代码 - 分步加载依赖包:有时候崩溃是因为依赖包加载失败,你可以逐个加载
scales、gtable等ggplot2依赖包,看哪个包加载时触发崩溃,缩小排查范围。
内容的提问来源于stack exchange,提问作者Jérôme Verstrynge
相关产品推荐
相关产品推荐

