Python은 debugpy를 사용하여 디버그를 사용할 수 있다!
솔직히 eclips debugger 보다 더 좋다..
해당 debug 환경은 lanch.json에서 설정하여 할 수 있따.
작성 예시를 먼저 보자
{
"version": "0.2.0",
"configurations": [
{
"name": "Module: algorithm service",
"type": "python",
"request": "launch",
"module": "algorithm.algorithm_service",
"args": ["gumiipark"],
"console": "integratedTerminal"
}
]
}
위 내용을 보면 configurations 에서 설정을 할 수 있따. 위 내용은 프로젝트 일부이나, 내용을 보면 모두 유추하기 쉽다.
물론 args를 여러개 보낼수도, 내용을 설정할 수도 있다.
위 내용을 설정을 해야 modules에서 설정 내용을 실행시켜 확인할 수 있기도 하고.. 다른 파일들도 모듈단위로 지정해놓으면 debug 하기 쉽다.
주요 내용은 다음과 같다.
name:
디버깅 작업의 이름
여러 디버깅 구성을 구분하기 위해 설정
type:
디버깅 타입을 지정
Python의 경우 debugpy 또는 python으로 설정
request:
디버깅을 시작하는 방식
"launch": 새 프로세스를 시작하여 디버깅.
"attach": 이미 실행 중인 프로세스에 연결.
module:
디버그할 Python 모듈을 지정
python -m <모듈 이름> 명령과 동일
예를 들어, 위 설정은 python -m algorithm.algorithm_service를 실행
args:
디버깅 시 전달할 인수
sys.argv에 전달되는 값이며, 모듈 실행 시 필요한 추가 파라미터를 지정
예를 들어, "gumiipark"는 sys.argv[1]로 전달
pip install debugpy
{
"version": "0.2.0",
"configurations": [
{
"name": "Module: algorithm service",
"type": "python",
"request": "launch",
"module": "algorithm.algorithm_service",
"args": ["gumiipark"], // 모듈 실행 시 전달할 인수
"console": "integratedTerminal", // 디버깅 콘솔을 VS Code 내부 터미널에서 실행
"justMyCode": false, // 사용자 코드가 아닌 외부 라이브러리 디버깅 활성화
"env": { // 환경 변수 설정
"DEBUG": "1",
"LOG_LEVEL": "debug",
"API_URL": "https://example.com/api"
},
"envFile": "${workspaceFolder}/.env", // 외부 환경 변수 파일
"cwd": "${workspaceFolder}/src", // 실행 경로 설정
"stopOnEntry": false, // 디버깅 시작 시 처음에 멈추지 않음
"pythonPath": "${workspaceFolder}/venv/bin/python", // 가상 환경의 Python 경로
"showReturnValue": true, // 함수의 반환값을 디버깅 콘솔에 표시
"logToFile": true // 디버깅 로그를 파일로 저장
}
]
}
위 내용처럼 생각보다 내용이 많았다! 심지어
설명은 다음과 같다!
{
"version": "0.2.0",
"configurations": [
{
"name": "Module: algorithm service",
"type": "python",
"request": "launch",
"module": "algorithm.algorithm_service",
"args": ["gumiipark"], // 모듈 실행 시 전달할 인수
"console": "integratedTerminal", // 디버깅 콘솔을 VS Code 내부 터미널에서 실행
"justMyCode": false, // 사용자 코드가 아닌 외부 라이브러리 디버깅 활성화
"env": { // 환경 변수 설정
"DEBUG": "1",
"LOG_LEVEL": "debug",
"API_URL": "https://example.com/api"
},
"envFile": "${workspaceFolder}/.env", // 외부 환경 변수 파일
"cwd": "${workspaceFolder}/src", // 실행 경로 설정
"stopOnEntry": false, // 디버깅 시작 시 처음에 멈추지 않음
"pythonPath": "${workspaceFolder}/venv/bin/python", // 가상 환경의 Python 경로
"showReturnValue": true, // 함수의 반환값을 디버깅 콘솔에 표시
"logToFile": true // 디버깅 로그를 파일로 저장
}
]
}
name: 디버깅 구성을 구분하기 위한 이름.
type: 디버깅 타입 (python 또는 debugpy).
request: 디버깅 모드, launch는 새 프로세스 시작, attach는 기존 프로세스 연결.
module: 실행할 Python 모듈.
args: 모듈 실행 시 전달할 명령줄 인수.
console: 디버깅 콘솔 설정. integratedTerminal, externalTerminal, none.
env: 환경 변수를 직접 설정.
envFile: .env 파일을 지정하여 환경 변수를 로드.
cwd: 디버깅 실행 디렉토리.
pythonPath: 사용할 Python 실행 파일 경로.
justMyCode: 외부 라이브러리를 디버깅할지 여부 (false로 설정 시 가능).
stopOnEntry: 실행 직후 중단점을 설정하지 않아도 첫 줄에서 중단.
showReturnValue: 함수의 반환값을 콘솔에 표시.
logToFile: 디버깅 로그를 파일로 저장.
Type: python
Python 코드 실행 및 디버깅.
모듈 실행, 스크립트 실행, 기존 프로세스 연결 지원.
{
"name": "Python: File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
Type: node
Node.js 애플리케이션 디버깅.
파일 실행, 프로세스 연결, 원격 디버깅 지원.
{
"name": "Node.js: Launch Program",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/app.js"
}
Type: java
Java 프로젝트 디버깅.
Maven, Gradle, 단일 파일 디버깅 지원.
{
"name": "Java: Launch Program",
"type": "java",
"request": "launch",
"mainClass": "com.example.Main",
"projectName": "my-java-project"
}
Type: cppdbg
C++ 애플리케이션 디버깅.
GCC, Clang, MSVC와 호환.
{
"name": "C++: Launch Program",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/myprogram",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb"
}
Type: go
Go 언어 지원 디버깅 (Delve 사용).
{
"name": "Go: Launch",
"type": "go",
"request": "launch",
"program": "${workspaceFolder}"
}
Type: ruby
Ruby 애플리케이션 디버깅.
{
"name": "Ruby: Debug",
"type": "ruby",
"request": "launch",
"program": "${workspaceFolder}/app.rb"
}
Type: docker
Docker 컨테이너 내에서 실행되는 애플리케이션 디버깅.
{
"name": "Docker: Python - Django",
"type": "docker",
"request": "launch",
"preLaunchTask": "docker-run: debug",
"python": {
"module": "django",
"args": ["runserver", "--noreload"]
}
}
Type: PowerShell
PowerShell 스크립트 디버깅.
{
"name": "PowerShell: Script",
"type": "PowerShell",
"request": "launch",
"script": "${file}",
"args": []
}
원격 프로세스 디버깅을 위해 사용.
프로세스가 실행 중인 호스트와 포트를 지정.
Python 원격 디버깅
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"connect": {
"host": "127.0.0.1",
"port": 5678
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}
]
}
Node.js 원격 디버깅
{
"name": "Node.js: Remote Attach",
"type": "node",
"request": "attach",
"address": "127.0.0.1",
"port": 9229,
"remoteRoot": "/app",
"localRoot": "${workspaceFolder}"
}

위 처럼 variables에서도 값을 확인할 수 있고

debug console에서도 확인할 수 있따!!
이제 print로 디버깅하지말자!!

BreakPoint 거는 건 잊지마시오,,