[Python] 디버거 pdb 사용법 - 이 좋은걸 지금 알았다니..

2022. 9. 27. 23:14·Python
반응형

아주 복잡한 딥러닝 코드를 보다보면.. 디버깅 해야할 때가 한둘이 아니다!

특히 모델 특정 부분의 레이어의 차원이나, 무엇이 input으로 들어가는지 정확하게 파악하기 위해서는 디버깅이 필수적이다. 과거의 나는.. 이를 위해 주피터로 모든 config 파일과 dataloader부터 차례로 써내려가며 똑같은 환경을 만들어주기 위해 노력했으나... 이는 너무 불편할 수 있다. 따라서 이럴 때 python 전용 디버거 pdb를 사용하면 아주 간편하다!

사용법을 간단히 알아보자!


 

# pdb 사용법

사실 구글링을 해보면 약 두가지의 사용법이 나오지만, 딥러닝 모델을 디버깅할 때는 특정 부분의 변수가 필요한 경우가 많으므로 하나의 유용한 방법만 공유하겠다. 내가 모델 내에서 디버깅하고 싶은 부분 아래에 다음과 같이 입력하면 된다.

"""
내가 디버깅하고 싶은 부분이 들어있는 코드 
"""
import pdb
pdb.set_trace()

그러면 import pdb 위에까지 코드가 실행되고, 터미널에서 멈춘다. 그러면 이제 해당 부분에서 변수가 무엇인지, 어떤 값이 들어오는지를 해당 시점에서 알 수 있는 것 ! ⭐️⭐️⭐️⭐️****

예를 들면 사용법은 다음과 같다.

def sum(x, y):
    z = x + y
    return z

a = 100
b = 250
c = sum(a, b)

# 이곳에서 함수를 멈추고 디버깅을 하고 싶을 때 
import pdb
pdb.set_trace()  

print(c)

 

# pdb 명령어 모음 

터미널에서 사용할 수 있는 pdb 명령어는 다음과 같다. 유용하게 사용해보자 !

 

# Reference 

http://pythonstudy.xyz/python/article/505-Python-%EB%94%94%EB%B2%84%EA%B9%85-PDB

반응형
저작자표시 (새창열림)

'Python' 카테고리의 다른 글

[Python] Python Class에 대한 기초 정리하기  (0) 2023.06.11
[Python] 디렉토리 내 특정 파일 삭제하기  (0) 2022.10.11
[Python] Segmentation label 시각화하기 - 픽셀 값이 너무 작을 때  (1) 2022.09.05
[Python] shutil과 os로 디렉토리, 폴더 조작하기  (0) 2022.08.05
'Python' 카테고리의 다른 글
  • [Python] Python Class에 대한 기초 정리하기
  • [Python] 디렉토리 내 특정 파일 삭제하기
  • [Python] Segmentation label 시각화하기 - 픽셀 값이 너무 작을 때
  • [Python] shutil과 os로 디렉토리, 폴더 조작하기
당니이
당니이
씩씩하게 공부하기 📚💻
  • 당니이
    다은이의 컴퓨터 공부
    당니이
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Achieved 👩🏻 (14)
        • 생각들 (2)
        • TIL (6)
        • Trial and Error (1)
        • Inspiration ✨ (0)
        • 미국 박사 준비 🎓 (1)
      • Computer Vision💖 (39)
        • Basic (9)
        • Video (5)
        • Continual Learning (7)
        • Generative model (2)
        • Domain (DA & DG) (5)
        • Multimodal (8)
        • Multitask Learning (1)
        • Segmentation (1)
        • Colorization (1)
      • RL 🤖 (1)
      • Autonomous Driving 🚙 (11)
        • Geometry (4)
        • LiDAR 3D Detection (1)
        • Trajectory prediction (2)
        • Lane Detection (1)
        • HDmap (3)
      • Linux (15)
      • PyTorch👩🏻‍💻 (10)
      • Linear Algebra (2)
      • Python (5)
      • NLP (10)
        • Article 📑 (1)
      • Algorithms 💻 (22)
        • Basic (8)
        • BAEKJOON (8)
        • Programmers (2)
      • ML (1)
        • 통계적 머신러닝(20-2) (1)
      • SQL (3)
      • 기초금융 💵 (1)
  • 블로그 메뉴

    • 홈
    • About me
  • 링크

    • 나의 소박한 github
    • Naver 블로그
  • 공지사항

  • 인기 글

  • 태그

    백트래킹
    코딩테스트
    dfs
    pytorch
    NLP
    continual learning
    Python
    LLM
    domain adaptation
    CV
    conda
    CL
    Incremental Learning
    자료구조
    til
    리눅스
    알고리즘
    백준
    domain generalization
    Linux
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
당니이
[Python] 디버거 pdb 사용법 - 이 좋은걸 지금 알았다니..
상단으로

티스토리툴바