|
| 1 | +## (Chapter 14) pdb 사용해보기 |
| 2 | +#### (참고) 주요 PDB 명령어 |
| 3 | +- n (next): 다음 라인으로 이동 |
| 4 | +- s (step): 함수 내부로 들어감 |
| 5 | +- c (continue): 다음 중단점까지 실행 |
| 6 | +- p (print): 변수 값 출력 |
| 7 | +- l (list): 현재 위치의 코드 표시 |
| 8 | +- q (quit): 디버거 종료 |
| 9 | + |
| 10 | +#### test.py |
| 11 | +```python |
| 12 | +import pdb |
| 13 | + |
| 14 | +def add(n1, n2): |
| 15 | + result = n1 + n2 |
| 16 | + pdb.set_trace() |
| 17 | + return result |
| 18 | + |
| 19 | +def subtract(n1, n2): |
| 20 | + result = n2 - n1 |
| 21 | + pdb.set_trace() |
| 22 | + return result |
| 23 | + |
| 24 | +a = 1 |
| 25 | +b = 2 |
| 26 | +c = 3 |
| 27 | +d = add(a, b) |
| 28 | +e = subtract(c, b) |
| 29 | +``` |
| 30 | + |
| 31 | +#### Result |
| 32 | +``` |
| 33 | +✗ python3 -m pdb test.py |
| 34 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(1)<module>() |
| 35 | +-> import pdb |
| 36 | +(Pdb) n |
| 37 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(3)<module>() |
| 38 | +-> def add(n1, n2): |
| 39 | +(Pdb) n |
| 40 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(8)<module>() |
| 41 | +-> def subtract(n1, n2): |
| 42 | +(Pdb) n |
| 43 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(13)<module>() |
| 44 | +-> a = 1 |
| 45 | +(Pdb) n |
| 46 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(14)<module>() |
| 47 | +-> b = 2 |
| 48 | +(Pdb) l |
| 49 | + 9 result = n2 - n1 |
| 50 | + 10 pdb.set_trace() |
| 51 | + 11 return result |
| 52 | + 12 |
| 53 | + 13 a = 1 |
| 54 | + 14 -> b = 2 |
| 55 | + 15 c = 3 |
| 56 | + 16 d = add(a, b) |
| 57 | + 17 e = subtract(c, b) |
| 58 | + 18 |
| 59 | +[EOF] |
| 60 | +(Pdb) n |
| 61 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(15)<module>() |
| 62 | +-> c = 3 |
| 63 | +(Pdb) n |
| 64 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(16)<module>() |
| 65 | +-> d = add(a, b) |
| 66 | +(Pdb) s |
| 67 | +--Call-- |
| 68 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(3)add() |
| 69 | +-> def add(n1, n2): |
| 70 | +(Pdb) n |
| 71 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(4)add() |
| 72 | +-> result = n1 + n2 |
| 73 | +(Pdb) n |
| 74 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(5)add() |
| 75 | +-> pdb.set_trace() |
| 76 | +(Pdb) n |
| 77 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(6)add() |
| 78 | +-> return result |
| 79 | +(Pdb) n |
| 80 | +--Return-- |
| 81 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(6)add()->3 |
| 82 | +-> return result |
| 83 | +(Pdb) n |
| 84 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(17)<module>() |
| 85 | +-> e = subtract(c, b) |
| 86 | +(Pdb) s |
| 87 | +--Call-- |
| 88 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(8)subtract() |
| 89 | +-> def subtract(n1, n2): |
| 90 | +(Pdb) c |
| 91 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(11)subtract() |
| 92 | +-> return result |
| 93 | +(Pdb) l |
| 94 | + 6 return result |
| 95 | + 7 |
| 96 | + 8 def subtract(n1, n2): |
| 97 | + 9 result = n2 - n1 |
| 98 | + 10 pdb.set_trace() |
| 99 | + 11 -> return result |
| 100 | + 12 |
| 101 | + 13 a = 1 |
| 102 | + 14 b = 2 |
| 103 | + 15 c = 3 |
| 104 | + 16 d = add(a, b) |
| 105 | +(Pdb) n |
| 106 | +--Return-- |
| 107 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(11)subtract()->-1 |
| 108 | +-> return result |
| 109 | +(Pdb) n |
| 110 | +--Return-- |
| 111 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(17)<module>()->None |
| 112 | +-> e = subtract(c, b) |
| 113 | +(Pdb) n |
| 114 | +--Return-- |
| 115 | +> <string>(1)<module>()->None |
| 116 | +(Pdb) n |
| 117 | +> /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/bdb.py(584)run() |
| 118 | +-> self.quitting = True |
| 119 | +(Pdb) n |
| 120 | +> /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/bdb.py(585)run() |
| 121 | +-> sys.settrace(None) |
| 122 | +(Pdb) n |
| 123 | +The program finished and will be restarted |
| 124 | +> /Users/user/Documents/CPython-Guide/ch14/test.py(1)<module>() |
| 125 | +-> import pdb |
| 126 | +(Pdb) q |
| 127 | +``` |
| 128 | + |
| 129 | +## (Chapter 15) cProfile 사용해보기 |
| 130 | + |
| 131 | +(위 test.py에서 pdb 관련 부분만 주석 처리) |
| 132 | +``` |
| 133 | +✗ python3 -m cProfile test.py |
| 134 | + 5 function calls in 0.000 seconds |
| 135 | +
|
| 136 | + Ordered by: standard name |
| 137 | +
|
| 138 | + ncalls tottime percall cumtime percall filename:lineno(function) |
| 139 | + 1 0.000 0.000 0.000 0.000 test.py:3(<module>) |
| 140 | + 1 0.000 0.000 0.000 0.000 test.py:3(add) |
| 141 | + 1 0.000 0.000 0.000 0.000 test.py:8(subtract) |
| 142 | + 1 0.000 0.000 0.000 0.000 {built-in method builtins.exec} |
| 143 | + 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} |
| 144 | +``` |
| 145 | + |
0 commit comments