파이썬 프로그램 분석 도구 비즈트레이서(VizTracer) 사용하기
길지 않은 파이썬 코드를 읽고 이해하는 것은 파이썬에 조금만 익숙한 프로그래머라면 그리 어려운 일이 아니다. 또한, 규모가 큰 프로그램이라도 통합 개발 도구를 사용하여 호출하는 곳들을 찾고, 정의된 곳을 따라 들어가면서 코드를 조금씩 이해하는 것이 프로그램 분석의 정석 일수 있다. 그렇지만, 빠르고 효과적인 분석을 위해서는 프로그램의 실제 동작 과정을 큰 그림으로 먼저 살펴보는 것이 중요하다.
비즈트레이서(VizTracer)는 도구의 이름처럼 프로그램의 실행 과정을 추적하여 그 결과를 도표를 통해서 쉽게 확인할 수 있도록 도와준다. 비주얼스튜디오 코드 익스텐션(VizTracer VS Code)을 사용하면 코드와 연동하여 분석 결과를 유용하게 활용할 수 있다. 전체 코드는 https://github.com/gaogaotiantian/viztracer에서 확인할 수 있다.
pip install viztracer
설치는 위와 같이 pip 명령으로 연관 도구와 함께 간단하게 수행할 수 있다.
실행은 기존에 프로그램을 "python Beremiz.py"처럼 수행시켰다면 "viztracer Beremiz.py"처럼 수행하면 된다. 옵션으로 "--log_function_args --log_return_value"를 추가하면 함수 호출 시의 아규먼트와 리턴값도 보고서에서 확인할 수 있다.
프로그램이 실행되면 프로그램의 동작과정을 알고 싶은 과정을 진행하고 프로그램을 종료하면 위의 그림과 같이 데이터 분석 및 저장 작업을 수행하고 결과로 result.json이 만들어지는 것을 확인할 수 있다.
결과를 보는 방법은 위와 같이 vizviewer result.json라고 명령을 입력하면 자체 웹서버를 띄우면서 웹 브라우저에서 결과를 조회할 수 있도록 해준다. 중단은 콘솔에서 Ctrl+C를 누르면 된다.
웹 브라우저를 통해서 결과를 확인한 화면은 위의 그림과 같다. 바의 특정 함수를 클릭하면 하단에서 상세 내용과 함께 해단 코드를 확인할 수 있다. 프로그램의 호출 흐름을 손쉽게 확인할 수 있다. vizviewer가 동작 중이라면 언제든지 http://127.0.0.1:9001/ 주소로 결과를 확인할 수 있다. w/s 키로 줌인/줌아웃을 할 수 있고 a/d 키로 좌/우 확장을 할수 있는데, 자세한 메뉴와 기능은 좌측 상단의 ▤ "Show Menu" 아이콘을 클릭한다.