Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Dtrace에서 node.js의 USDT를 사용할 때 failed to resolve translated type for args 오류

이것도 지난 포스팅처럼 play.node()의 발표자료를 준비하면서 알게 된 것인데 node.js 어플리케이션의 USDT를 사용하려고 dtrace를 실행하면 제대로 추적이 되지 않고 다음과 같은 오류가 나타나는 경우가 있다.(SmartOS에서 발생했었는데 재설치후에는 괜찮아진것으로 보아 OS의 설정에 따른 것으로 보인다.)

$ sudo dtrace -qs script.d
dtrace: failed to compile script script.d: line 5: failed to resolve translated type for args[1]

이 오류는 Dtrace가 노드의 변환 파일(node.d)을 제대로 찾지 못해서 발생한 오류로 기본적으로는 자동으로 찾아야 하는데 못 찾은 것이다. nhttpsnoop의 문서에 나온 내용을 참고하면 기본적으로 Dtrace가 /usr/lib/dtrace/node.d에서만 이 파일을 찾는데 이 파일은 node.js 설치시 지정한 $PREFIX에 하위로 $PREFIX/lib/dtrace/node.d에 설치가 된다. /usr에 노드를 설치하지 않았다면 직접 지정을 해주어야 한다.

sudo dtrace -L /opt/local/lib/dtrace -qs script.d
위와같이 -L 옵션으로 node.d의 경로를 지정해 주면 오류없이 사용할 수 있다.

2012/12/12 03:25 2012/12/12 03:25