본문 바로가기
프로그래밍 놀이터/Tips

[Debug & Profile] Valgrind 에 대해 알아보자.

by 돼지왕 왕돼지 2012. 3. 21.
반응형


안녕하세요
돼지왕왕돼지입니다.


오늘은 Valgrind 가 뭐 하는 녀석인지 한번 알아보겠습니다.

이 글은 Valgrind 공식 홈페이지의 내용을 번역한 내용입니다.

Valgrind 에 대한 총체적 소개 ( http://valgrind.org/ )

Valgrind 는 instrumentation framework 로 dynamic 분석 툴을 만드는 데 쓰입니다. Valgrind tool 은 자동적으로 많은 memory 관리 문제와 thread bug들을 찾아내고, program 을 자세히 profile 할 수 있습니다. 
[번역자 주]

 Valgrind 를 이용해서 새로운 tool 을 만들 수도 있습니다.  

Valgrind 는 현재 6개의 tool 로 구성되어 있습니다. Memory error detector, thread error detector 2개, cache와 branchprediction profiler, call-graph generating cache, heap profiler 가 그것이죠. Valgrind3개의 추가적인 실험적인 tool 들을 가지고 있다. heap/stack/global array overrun detector, second heap profiler ( heap block 이 어떻게 쓰이고 있는지 측정 ), SimPoint basic block vector generator가 그것들입니다. Valgrind 는 X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, PPC64/Linux, PPC64/Linux, S390X/Linux, ARM/Android( 2.3.x ), X86/Darwin and AMD64/Darwin ( Mac OS X 10.6 and 10.7 ) 의 운영체제에서 돌아갑니다. 


Valgrind 는 Open Source /Free Software 이며, GNU General Pulblic License, version 2 하에 자유롭게 이용 가능합니다.




Valgrind 는 뭐하는 녀석일까? ( http://valgrind.org/info/about.html )

About Valgrind 


Valgrind 는 GPL license 를 가진 system 으로 Linux program 을 debug 하고 profile 하는 데 사용됩니다. Valgrind 의 tool suite 를 이용하여, 당신은 자동으로 쉽게 memory management 와 threading bugs 를 발견할 수 있어, 짜증나는 긴 시간의 bug-hunting 을 피할 수 있고, 당신의 프로그램을 더욱 더 안정적으로 만들 수 있습니다. 



Why should you use Valgrind?


- Valgrind 는 debugging time 을 줄여줍니다. Valgrind tool 을 활용하면 많은 memory management 와 threading bugs 를 쉽게 찾을 수 있습니다. Valgrind 는 당신의 프로그램이 찾는 데 오래 걸리거나, 절대 찾을 수 없는 일반적인 bug 들을 가지고 있지 않다는 사실을 증명해줍니다. 당신은 그런 버그들이 문제가 되기 전에 찾아서 제거할 수 있습니다.


- Valgrind 는 program 의 speed 를 올려줍니다. Valgrind tool 을 사용하면 매우 정밀한 profiling 을 할 수 있어, 프로그램의 병목 현상 ( bottle neck ) 을 찾을 수 있기 때문이죠.


- Valgrind 는 Free입니다. 여기서 Free 라는 의미는 무료로 download 할 수 있고, 무료로 source code 를 볼수 있고, 무료로 수정할 수 있으며, 무료로 타인에게 전달할 수도 있습니다. 물론 모든 것이 GNU GPL 의 제약사항은 있습니다. 여기서 무료라는 말은 돈을 내지 않는다는 말이죠.


- Valgrind 는 여러개의 대중적인 platform 에서 실행 가합니다. x86/Linux, AMD64/Linux and PPC32/Linux 와 같은 Platform 말입니다. Valgrind 는 모든 major Linux 배포판에서 작동합니다. 유명한 배포판은 Red Hat, SuSE, Debian 등입니다.


- Valgrind 는 사용하기가 쉽습니다. Valgrind 는 동적 binary instrumentation 입니다. 그래서 어플리케이션을 수정할 필요도, recompile 할 필요도, relink 할 필요도 없습니다. 그저 command line 에 valgrind 를 쓰고 옵션 값들만 주변 잘 작동 합니다.


- Valgrind 는 단순한 장난감이 아닙니다. Valgrind 는 최초이자, 최고의 debugging & profiling system입니다. 크고, 복잡한 프로그램일수록 그 능력은 더 탁월합니다. 우리는 Valgrind 를 사용하는 유저들에게 지속적으로 feedback 을 받아왔습니다. 프로젝트의 코드 수를 합치면 2500만 line 을 넘죠. Valgrind 는 큰 프로젝트 뿐만 아니라 작은 project 혹은 개인 프로젝트에도 수백명의 프로그래머들에 의해 사용되어 왔습니다.


- Valgrind 는 어떤 software type 이던지 사용할 수 있습니다. Valgrind는 desktop app, library, database, game, web browser, network server, distributed control system, virtual reality framework, transaction server, compiler, interpreter, virtual machine, telecom app, embedded software, medical image, scientific program, signal process program, videi/audio program, business intelligence software, financial/banking software, operation system daemon 등에 모두 사용될 수 있고, 사용되어 왔습니다. 사이트에 접속하시면 Valgrind 를 사용한 모든 프로젝트 list 를 볼 수 있습니다.


- Valgrind 는 널리 사용됩니다. Valgrind 는 세계 각지의 수천명의 프로그래머들에 의해 사용되어 왔습니다. 그리고 30개국 이상의 많은 사용자들에게서 피드백도 받아오고 있습니다.


- Valgrind 는 어떤 언어로 쓰여졌던 상관없이 함께 작동합니다. Valgrind 는 program binary 와 직접 작동하기 때문에, 어떤 언어로 쓰여져 있던 상관 없습니다. Compile 이 되어있던, JIT ( Just-in-time ) compile 방식이던, interpreter 를 사용하던 상관이 없습니다. Valgrind tool 은 C, C++ 프로그램에 치중된 툴이긴 합니다. 왜냐하면 C와 C++로 작성된 프로그램들이 보통 버그가 가장 많기 때문이죠. 하지만, 다른 여러 언어들을 사용해서 만든 프로그램들도 debug 하고 profile 할 수 있습니다. Valgrind 는 다음과 같은 프로그램들에서 쓰여 왔습니다. C, C++, Java, Perl, Python, assembly code, Fortran, Ada, 그외의 많은 언어들 말이죠.
 

- Valgrind 는 user-space code 는 물론 system library 까지 완벽하게 cover 하여 작동합니다. 당신이 source code 를 가지고 있지 않아도 상관 없습니다. Valgrind 만 이용하면 debug & profile 이 가능합니다.


- Valgrind 는 확장성이 있습니다. 누구든지 강력하면서도 새로운 tool 을 만들 수 있고, instrumentation 으로 추가할 수 있습니다. 이것은 아무 준비 없이 tool 을 만드는 것보다 훨씬 수월합니다. 이런 특징이 Valgrind 를 새로운 프로그램 분석 도구로서 최적화된 녀석이라는 것을 입증합니다. Valgrind 는 다음의 대학기관에서 연구의 목적으로도 사용되어왔습니다. Cambridge, MIT, UC Berkeley, UC Santa Barbara, Carnegie Mellon, Cornell, University of New Mexico, Australian National University, University of Melbourne, TU Muenchen ( Munich ) and Graz University of Technology.


- Valgrind  는 유지보수가 지속적으로 이루어지고 있습니다. Valgrind 개발자들은 지속적으로 bug 를 고치고, 성능을 향상시키고, 새로운 LInux 배포판과 Library 에서 잘 작동할 수 있도록 노력하고 있습니다. 당신이 구독할 수 있는 mailing list 도 있구요, 문제가 있으면 contact 도 할 수 있습니다.


단점은 없냐구요? 최고의 단점 중 하나는 Valgrind 를 사용하면 프로그램이 엄청 느리게 작동합니다. 어떤 도구를 사용하느냐에 다르지만 5배에서 100배까지 느리게 작동할 수 있습니다. 이것은 다른 debugging 또는 profiling tool 을 사용했을 때 발생하는 느려지는 현상과 비슷합니다. 보통은 Valgrind 를 항상 사용하는 것이 아니니깐, 큰 문제는 아니라고 봅니다. 그리고 생각해보세요, 당신이 debugging 을 하기 위해 들이는 시간들을.


[번역자 Summary]
 

When should you use Valgrind?


당신이 원하는 것이 무엇이냐에 따라서 다릅니다. 언제 사람들이 bug-detecting tool 인 Valgrind 를 사용하는지 예를 들어보겠습니다.


- 항상. 규모가 작으면서 짧게 도는 프로그램의 경우는 항상 Valgrind 를 이용해서 프로그램을 돌릴 수 있습니다. ( 보통 Memcheck ). 그럼으로써 memory bug 는 즉각즉각 찾아지겠죠.


- 자동 테스팅. Valgrind tool의 automatic unit, integration, system, regression test 를 통해서 check 되지 않은 코드는 없다는 것을 보장할 수 있습니다.


- 큰 변화를 준 후. 새로운 코드에 bug 가 생기지 않았는데 점검하는 데 쓰일 수 있습니다.


- Bug 가 의심 될 때. 프로그램이 조금 이상하게 작동하나요? Valgrind 를 이용하여 bug가 발생하면 잡을 수 있습니다.


- Release 전에. 새롭게 release 되는 녀석이 최대한 bug 가 없고, 안정적이라는 것을 확신하기 위해서 사용합니다.


- Valgrind 의 profiling tool 을 사용하여 언제든 당신의 프로그램이 사용하는 시간을 측정할 수 있고, 이를 바탕으로 성능 향상을 할 수 있습니다.

 


도움이 되셨다면 손가락 꾸욱~




반응형

댓글