지금까지 각 언어가 크게 Compile, Interpreting의 2가지 방식으로 실행되는 것이 신기했습니다.
그 중 이벤트 단위로 변수, 실행 함수 스택의 추적이 흥미로울 것 같아 Python으로 디버깅을 공부하게 되었습니다.
- Runtime 전에 코드 분석 및 컴파일 과정이 필수!
- 미리 코드를 살펴보고 전체 맥락에 대한 정보가 주어지기 때문에 코드 최적화 및 성능 개선에 유리
- Runtime에 코드가 읽힘과 동시에 실행!
- Compile 언어와 다르게 코드 단위로 분리하여 디버깅 하는 게 상대적으로 용이하다
관계 | Class name | 설명 |
---|---|---|
부모 | Stack Inspector | 추적 함수의 실행 스택을 검사 |
Tracer | 추적 함수의 전역/local 변수 들을 저장하고 변화 추이를 저장 | |
Collector | 추적 함수 실행 동안에 발생하는 이벤트(line change, function call, function return 등) 기록 정확히는, 하위 class에서 활용할 수 있는 interface 제공 |
|
자식 | Coverage Collector | 추적 함수가 실행되는 context 정보(현재 실행 중인 함수 이름, 소스 코드 번호, 내부 변수 등)를 기록 |
관계 | Class name | 설명 |
---|---|---|
부모 | Statistical Debugger | Collector를 활용하여 수집한 정보를 표 형태로 볼 수 있도록 도와줌 |
Difference Debugger | 추적 함수의 문제 발생 여부에 따라 표 형태를 구분할 수 있도록 도와줌 | |
Spectrum Debugger | 추적 함수의 어떤 소스 코드에서 문제가 발생했는지 코드 레벨에서 보여줄 수 있도록 interface를 제공해주는 class | |
자식 | Discrete Spectrum Debugger | 추적 함수의 소스 코드의 문제 여부를 코드 시각화 및 색깔로 표현해주는 class |
![12345](https://private-user-images.githubusercontent.com/74173976/241366915-16dce9a7-a270-418e-9a91-2b0d7fbd44f2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTYwNTE3MDEsIm5iZiI6MTcxNjA1MTQwMSwicGF0aCI6Ii83NDE3Mzk3Ni8yNDEzNjY5MTUtMTZkY2U5YTctYTI3MC00MThlLTlhOTEtMmIwZDdmYmQ0NGYyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTE4VDE2NTY0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJiZjVmY2NhOGU4YTQwNmVlN2JiM2QzZDkwMzJjZjQ4MjU0Yjc1ZWZiZThhNWRiZDVmMGIyYzU2Y2ExNTliZmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.IzXxBxZ_xikmxJvE5o8SAWSKnMgb9IfpY0H2s18pRI8)
추적 관련 class 상속 + 수학 Metric을 활용하여 Tarantula Debugger와 Ochiai Debugger를 생성하는 것이 최종 목표