Visual Debugger for Jupyter Notebooks: Myth or Reality?
Elizaveta Shashkova EuroPython 2019
Visual Debugger for Jupyter Notebooks: Myth or Reality? Elizaveta - - PowerPoint PPT Presentation
Visual Debugger for Jupyter Notebooks: Myth or Reality? Elizaveta Shashkova EuroPython 2019 About Me Software Developer at JetBrains, PyCharm IDE Debugger and Data Science tools @lisa_shashkova 2 Visual Debugger 3
Elizaveta Shashkova EuroPython 2019
2
3
4
5
6
9
10
def tracefunc(frame, event, arg): print(frame.f_lineno, event) return tracefunc sys.settrace(tracefunc) 1 2 3 4 5 6
11
def greet_neighbors(): planets = ["Mars", "Venus"] for p in planets: print(f"Hi {p}!") return len(planets) sys.settrace(tracefunc) greet_neighbors() 1 2 3 4 5 6 7 8 9
12
1 2 3 4 5 6 7 8 9
1 call
def greet_neighbors(): planets = ["Mars", "Venus"] for p in planets: print(f"Hi {p}!") return len(planets) sys.settrace(tracefunc) greet_neighbors()
13
1 2 3 4 5 6 7 8 9
1 call 2 line
def greet_neighbors(): planets = ["Mars", "Venus"] for p in planets: print(f"Hi {p}!") return len(planets) sys.settrace(tracefunc) greet_neighbors()
14
1 2 3 4 5 6 7 8 9
1 call 2 line 3 line 4 line Hi Mars!
def greet_neighbors(): planets = ["Mars", "Venus"] for p in planets: print(f"Hi {p}!") return len(planets) sys.settrace(tracefunc) greet_neighbors()
15
1 2 3 4 5 6 7 8 9
1 call 2 line 3 line 4 line Hi Mars! 3 line 4 line Hi Venus!
def greet_neighbors(): planets = ["Mars", "Venus"] for p in planets: print(f"Hi {p}!") return len(planets) sys.settrace(tracefunc) greet_neighbors()
16
1 2 3 4 5 6 7 8 9 def greet_neighbors(): planets = ["Mars", "Venus"] for p in planets: print(f"Hi {p}!") return len(planets) sys.settrace(tracefunc) greet_neighbors()
1 call 2 line 3 line 4 line Hi Mars! 3 line 4 line Hi Venus! 5 line 5 return
17
program!
18
19
20
21
IPython kernel Front-end IDE
22
code IPython kernel Front-end IDE
IPython kernel
23
code execution Front-end IDE
24
result IPython kernel Front-end IDE
code object
25
IPython kernel code execution
location
26
location
27
location
28
29
IPython kernel IDE
cell source code MyNotebook.ipynb
generated <code object>
30
IPython kernel IDE
cell source code MyNotebook.ipynb
cell id generated <code object>
IPython kernel IDE
31
?
cell source code MyNotebook.ipynb
cell id generated <code object>
32
33
34
<cell source code>
35
<cell source code> patch name generation
36
<cell source code> patch name generation cell id
37
38
39
40
41
42
43
“Add breakpoint in a cell 3, line 2” IPython kernel Front-end IDE
44
“Add breakpoint in a cell 3, line 2” IPython kernel Front-end IDE
45
46
Front-end IPython kernel Kernel proxy
47
Front-end IPython kernel Kernel proxy
48
49
50
Front-end Kernel proxy IPython kernel Shell IOPub stdin
51
52
code debug x Blocked IPython kernel Front-end IDE
53
54
But ipdb works!
55
56
57
58
59
60
61
62
63
64
Python files!
extension
65
66
67
68
@lisa_shashkova