출처: http://www.yoonkn.com/valgrind
http://en.wikipedia.org/wiki/Valgrind 별생각없이 릭잡는 용도로만 써왔는데 이게 오묘하구나. 일종의 VM 역할을 해서 인스트럭션을 훔쳐보면서 수정까지 해주는 일종의 프레임웍 이더라. 그냥 빌드후 릭잡는 용도로만 써왔는데 좀더 신경써서 사용해봐야 겠다. valgrind 자체는 일종의 프레임웍이고 이 프레임웍위에서 도는 여러 툴들이 있는데 각각의 툴이 하는 역할만 대강 적어놓는다. 사용법은 아주 쉬우니 어떤 툴이 있다는 정도만 기억해주면 사용하는데 문제 없다. memcheckhttp://valgrind.org/docs/manual/mc-manual.html기본툴. 메모리를 잘못 사용하는 버그를 잡아내는데 사용된다. cachegrindhttp://valgrind.org/docs/manual/cg-manual.html이건 좀 묘하군... 돌려보면 캐시미스율 등을 보여주는데 이게 인텔의 Vtune 처럼 CPU 가 날리는 진짜 이벤트를 가지고 보여주는게 아니고 일종의 캐시 시뮬레이션으로 유추해낸 결과. CPU 가 하드웨어적으로 해주는 브랜치 프리딕션이나 캐시 프리페치까지 제대로 시뮬레이션 해줄까?? 어쨌거나 캐시히트까지 고려하면서 개발하는건 내 능력밖이니 그냥 기억만 해두자. callgrindhttp://valgrind.org/docs/manual/cl-manual.html프로파일러. 프로파일링 정보를 텍스트로 보는것은 효율이 안좋으니 GUI 를 써먹자. KCachegrind 참고 helgrindhttp://valgrind.org/docs/manual/hg-manual.html흠 쓰레드사용시 에러를 잡아주는 툴. 인텔 쓰레드 체커같은 넘이겠군. 멀티쓰레딩은 안쓰는게 좋다는 주의라 이걸 앞으로 쓰게 될지는 의문. 좀 시원찮은 방법으로 OpenMP 를 지원하는듯 한데 그럼 곧 쓰게 될지도 모르겠다.. 어쨌거나 이정도까지 필요한 상황이 온다면 인텔 쓰레드체커를 쓰는게 더 좋겠지. helgrind 란 이름이 hell 에서 나왔다면 정말 이름 잘지은듯. 원래 사람머리는 멀티쓰레드 짜라고 달려있는게 아니다. 정말 필요한 경우만 최소한으로 쓰레드를 써먹자. massifhttp://valgrind.org/docs/manual/ms-manual.html힙 프로파일러. 자기가 만든 프로그램이 얼마나 메모리를 먹는지 물어보면 대답못하는경우가 태반이다. 만약 그런 경우가 온다면 이걸로 얼렁뚱땅 돌려서 알려주자. 몇가지 알아둘점
|
No comments:
Post a Comment