VSCode调试Jupyter Notebook回调函数无法触发断点的求助
解决VSCode中Jupyter Notebook回调函数断点无法触发的问题
以下是几个可行的解决方法:
方法1:使用IPython内置调试器替代VSCode断点
由于interact_manual的回调函数运行在IPython内核的异步上下文里,VSCode的调试器无法直接捕获。改用IPython的set_trace()可以强制触发内核自带的调试器:
修改你的add_code_cell函数:
def add_code_cell(s): from IPython.core.debugger import set_trace set_trace() # 触发IPython调试器 if s=="test": file_text=s else: file_text="No such file" text=file_text.replace('\n','\\n').replace("\"","\\\"").replace("'", "\\'") javascript = Javascript(''' var cell = IPython.notebook.insert_cell_below("code") cell.set_text("{}") '''.format(f'{text}')) return javascript
点击按钮后,调试器会在Notebook的输出区域启动,你可以通过输入调试命令(如n单步执行、c继续、q退出)来调试函数逻辑。
方法2:关闭VSCode的"仅调试我的代码"设置
VSCode默认会跳过外部库代码的调试,但IPython处理Widget回调的逻辑可能被误判为外部代码。修改调试配置:
- 打开VSCode的
launch.json文件(如果没有则创建) - 添加或修改
justMyCode选项为false:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Jupyter Notebook", "type": "python", "request": "launch", "program": "${file}", "justMyCode": false } ] }
重新启动调试会话,尝试触发回调断点。
方法3:事后调试(%debug魔法命令)
如果回调函数执行时出现异常,可以在Notebook中新建一个单元格,输入%debug并运行,直接进入异常发生时的调试上下文,查看变量和调用栈。
内容的提问来源于stack exchange,提问作者jmk
相关产品推荐
相关产品推荐

