잘 안 알려진 (에.. 적어도 제 주위엔;;) 유용한 파이썬 디버깅 팁을 하나 소개합니다~
보통 파이썬 스크립트 테스트할 때 스크립트를 실행해서 익셉션이 발생하면 트레이스백을 보고 대충 상황을 추측하거나 예외난 부분 근처에 print를 잔뜩 써서 해결하게 됩니당. (디버거로 들어가기 힘든 부분에 들어갈 때..)
근뎅, 파이썬의 -i 옵션을 쓰면 요 문제를 바로 깔끔하게 해결할 수 있습니.. 으흐흐흐. 꺄아~* 다음 스크립트는 dict.get을 쓸 때 자주 발생하는 타입 에러 중 하나인뎅 봅시당~
1 2 3 |
<pre> 1 2 3 |
1 2 3 |
#!/usr/bin/env python d = {'hello': 5} print d.get('hello') + d.get('kitty') |
하면 당연히 d에 ‘kitty’가 없기 때문에 int+None해서 타입에러가 납니다. 근데, 요게 무지 긴 프로그램에 들어 가고 막 코드가 흩어져 있으면 깨나 애를 먹일 수 있는데, 파이썬에 -i옵션을 주면 다음과 같이 익셉션이 나자마자 바로 인터프리터가 떠서 상황을 볼 수가 있게 됩니당.
1 2 3 4 5 6 7 8 9 |
puppet(perky):~% python -i kitty.py Traceback (most recent call last): File "kitty.py", line 3, in ? print d.get('hello') + d.get('kitty') TypeError: unsupported operand types for +: 'int' and 'NoneType' >>> print d.get('kitty') None >>> print d {'hello': 5} |
으훗~ 물론 뭐 인터프리터니까 함수 몇 개 실행해 볼 수도.. 파이썬 2.3b2부터는 PYTHONINSPECT 환경변수를 아무꺼나로 지정해 주면, -i 옵션을 안 쓰고도 인터프리터를 띄울 수 있습니다.
예외가 난 상태의 콜 스택을 탐험하고 싶은 경우가 있습니다.
이럴 때에는 sys.excepthook에 재정의된 함수를 등록해 두고, 그 함수에서는 트레이스백을 출력하고 디버거를 실행시키게 합니다. 그러면 예외가 발생하면 자동으로 디버거가 뜨게 되겠죠.
끼약 엄청나네요
우와 엄청많다 ㅋㅋ
추천 프로그램 소개 좀
백일몽/ 오. 저는 ER Ultimate 강추요! 요새 음악은 안 듣고 이것만 듣고 있어요 ㅎㅎ;; 생활잡음을 만들어주는 프로그램이예요.
2세대 부러워요
앗 비주얼드 2!
구글뉴스는 못찾겠는데요?
ikspres/ 구글뉴스는 “더 보기”던가 다른 메뉴로 가셔서 뜨는 페이지에 있어요~
이건 더이상 MP3 가 아닙니다… ;;