루비 코드 분석을 하던 중 흐름 추적(?), code tracing을 하기 위해 알아보다가 찾은 라이브러리 공유드립니다.
새로운 툴은 언제나 환영이야! / The world could always use more tool. |
tracer 라는 라이브러리고 코드단에서 시작 부분과 끝 부분을 명시해주면 해동 코드 내 동작 순서를 로깅해줍니다.
#> gem install tracer
별도의 명령행으로 지원하지는 않습니다. 그냥 코드에서 직접 삽입해서 테스트하면 됩니다.
require 'tracer'
Tracer.on #Tracing을 시작할 부분
a = [1,2,3,4,5]
a.each do | number |
puts number
end
Tracer.off #off를 만날때까지 Tracing 함
실행해보면.. 실행헀던 코드라인과 코드 내용을 한번에 볼 수 있습니다.
#> ruby test.rb
#0:test.rb:6::-: a = [1,2,3,4,5]
#0:test.rb:7::-: a.each do | number |
#0:test.rb:8::-: puts number
1
#0:test.rb:8::-: puts number
2
#0:test.rb:8::-: puts number
3
#0:test.rb:8::-: puts number
4
#0:test.rb:8::-: puts number
5
#0:test.rb:11::-: Tracer.off #off를 만날때까지 Tracing 함
다른 소스에 Tracer 메소드를 삽입하는 형태로 Command line 툴로 만들어서 써도 괜찮을듯하네요 :) (맨 끝 찾는게 일이려나..)
라이브러리 사용이 있는 경우
라이브러리 사용이 있는 경우엔 라이브러리 내부까지 체크해서 결과를 리턴합니다. 제 코드중 가장 짧은 ftc(https://github.com/hahwul/ftc)에 맨 앞부분과 뒷부분에 넣고 돌려보면 라이브러리 하단까지 잡히는 걸 볼 수 있습니다.
큰 코드 불러오면 난리날듯.. |