레이블이 Debug-Profile인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Debug-Profile인 게시물을 표시합니다. 모든 게시물 표시

9/11/2015

Debug/Profile Tools (추후 설명 및 예제 추가)

1. Debug Section 

우선 Profile 과 Debug를 알기 이전에 ELF Format에서 사용하고 있는 Debuging Section에 대해 간단히 알아 두도록하자.
ELF 와 A.out 큰 차이라고 하면, 동적 링크기능일 것이다. 
ELF만 책이 1권이므로, 여기서 설명은 하지 않도록 하겠다. 

그건 나중에 세부적으로 논하도록 하고 일단 COFF 와 DWARF를 대충은 알고 있도록하자.
  • Debugging Data Format

  • COFF 와 DWARF
COFF 와 DWARF이며, 주로 DWARF를 거의 보개 될것이며, 이것도 각 1/2/3 버전 존재한다.
세부적인 내용은 GCC 전체 Manaul에 가도 있다. 

  • TI DWARF 자료 

주로 Profile Tools을 사용하려는 목적은 소스코드 최적화 이며, 
이는 세부적인 분석을 통하여, 어디서 병목현상과 문제사항을 파악하는 것이라고 생각되어진다.

여기서 각 실행동작 시간의 중요성과 각 시간 및 병목되어지는 부분을 파악하는 것이  
가장 중요하므로 각 부분들을 찾아서 파악하자.

아래의 Tools이외에도 같이 연결해서 사용할 Tools들은 많다. 

2.1 perf

주로 사용되는 곳이 Linux kernel Profile이며, CPU 성능도 측정이 가능하며, 분석도 가능하다.

각 Perf Manual
  https://perf.wiki.kernel.org/index.php/Main_Page
  https://perf.wiki.kernel.org/index.php/Tutorial#Counting_with_perf_stat
  https://perf.wiki.kernel.org/index.php/Tutorial
  http://egloos.zum.com/studyfoss/v/5634580
  http://www.brendangregg.com/perf.html
  https://github.com/brendangregg/perf-tools


2.2 oprifile

perf 와 유사하며, 아래의 wiki만 봐도 대충 파악 가능 
  https://en.wikipedia.org/wiki/OProfile
  http://oprofile.sourceforge.net/doc/results.html
  http://oprofile.sourceforge.net/doc/opreport.html
  http://www.hanbit.co.kr/network/view.html?bi_id=1413
  https://doc.opensuse.org/documentation/html/openSUSE_121/opensuse-tuning/cha.tuning.oprofile.html#sec.tuning.oprofile.overview
  http://processors.wiki.ti.com/index.php/Oprofile_User's_Guide
  http://egloos.zum.com/furmuwon/v/10701572


2.3 gconv

GCC와 함께 이용이 되며, 프로그램을 분석하여 좀더 효율적으로 돌아가도록 분석해주는 Tool이며,
쉽게 말하면, 본인 Source의 최적화하기 위해서 사용되어지는 Profile Tool이다.

gconv manual은 GCC Manual에 포함이 되어있으며, 자세한 내용은 아래를 참조하자.
  https://gcc.gnu.org/onlinedocs/gcc/Gcov.html#Gcov
  http://korea.gnu.org/manual/release/gcov/gcov_toc.ko.html


2.4 gprof

Application Program에서 이용되며, Call Graph 및 Histrogram 주로 IDE에서 많이 이용됨
gcc를 통해 complie 시 -pg 옵션을 추가해야 동작가능

  http://korea.gnu.org/manual/release/gprof/gprof_toc.html
  https://en.wikipedia.org/wiki/Gprof
  http://korea.gnu.org/manual/release/gprof/gprof_2.html
  https://kukuta.tistory.com/202


2.5 기타  

시간기반으로 다 확인해야 하기 때문에 여기에 같이 넣도록 한다.