#python-3.x #debugging #breakpoints #pdb #ipdb
Вопрос:
Я пытаюсь понять отладку в ноутбуках jupyter. Согласно моему пониманию, применение breakpoint()
-это способ сделать это, но я сталкиваюсь с несколькими проблемами, которые я описываю ниже. У меня есть файл с именем test_debugger.py
, ./
который я использую в качестве опоры в своих небольших усилиях по пониманию.
#./test_debugger.py
def fun1(a):
print(a)
breakpoint()
if a > 3:
print(a 1)
breakpoint()
print(a 2)
breakpoint()
return None
Установка:
from test_debugger import *
Проблемы:
- точка останова() входит в отладку интерактивной оболочки:
print(5)
breakpoint()
fun1(4)
breakpoint()
Выполнение приведенного выше кода дает мне
5
--Return--
None
> <ipython-input-2-4276bdd18b42>(2)<module>()
1 print(5)
----> 2 breakpoint()
3 fun1(4)
4 breakpoint()
ipdb>
Я нажимаю n
и хочу перейти к следующей строке в ячейке, но, думаю, это связано с отладкой интерактивной оболочки. При нажатии n
я получаю:
ipdb> n
[... skipped 1 hidden frame]
[... skipped 1 hidden frame]
[... skipped 1 hidden frame]
[... skipped 1 hidden frame]
> /home/nitin/miniconda/envs/nyraml386/lib/python3.8/site-packages/IPython/core/interactiveshell.py(3330)run_ast_nodes()
3328 to_run.append((node, 'single'))
3329
-> 3330 for node,mode in to_run:
3331 if mode == 'exec':
3332 mod = Module([node], [])
ipdb>
Вопрос: Как мне получить желаемую функциональность n
(перейти к следующей строке в коде, написанном мной, оставаясь в той же оценке функции) и s
(перейти к следующей строке в коде, написанном мной, при переключении области действия функции везде, где это необходимо).
- PYTHONBREAKPOINT not available in jupyter notebook
The behavior expected: I have read that in case I want to disable all breakpoint()
then I can set the env variable PYTHONBREAKPOINT
to manage the behavior of breakpoint()
. Specifically, I can set PYTHONBREAKPOINT=0
to disable breakpoint()
The behavior seen: PYTHONBREAKPOINT
is not a variable available at all in jupyter notebook. Even if I set it equal to 0 that does not alter the disable breakpoint()
. It is as if nothing happened
Question: How to manage breakpoint()
when operating in jupyter notebooks. What is the way to bring in PYTHONBREAKPOINT
into the notebook