디지털 장인정신

블로그 이미지
WebKit개발자의 혼자쓰는 블로그
스페로

Article Category

All (71)
Technology (47)
Creativity (19)
Private (4)

Recent Comment

Recent Trackback

Calendar

«   2018/12   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Archive

My Link

  • Total339,105
  • Today16
  • Yesterday243
  1. 2011.05.25
    kcachegrind 없이 코딩 어떻게 해?
  2. 2011.02.19
    Debug it! 실용주의 디버깅 (1)
우리회사의 황모씨 덕분에 아주 좋은 툴을 알게되었다.
callgrind + kcachegrind

skia의 sample 의 profile을 측정해 보았다.
그래프로 아주 이쁘게 보여준다.



사용법도 간단하다.
1. apt-get으로 callgrind와 kcachegrind 설치
2. -g 옵션으로 타겟 빌드
3. valgrind --tool=callgrind --instr-atstart=yes --dump-instr=no --simulate-cache=no --collect-jumps=yes  ./output
4. kcachegrind

Gwang-Yoon Hwang Company에게
세부정보 표시 18:41 (30분 전)
To execute Callgrind:
valgrind --tool=callgrind --instr-atstart=no --dump-instr=no --smc-check=all --collect-jumps=yes [executable] [argument]


--tool= callgrind : use callgrind tool on valgrind

--dump-instr=no : we are not interested in assembly code level.

--instr-atstart=no : do not start the instrumentation of callgrind while staring.
  Because we are only interested in the profiling while rendering webpage.

--smc-check=all : This option controls Valgrind's detection of self-modifying code.
  JIT::linkCall function modifying the jitted code, so valgrind must check self modification.

--collect-jumps=yes : Get the information for (conditional) jumps.

--main-stacksize=110000000 : set stack size

--toggle-collect=PVR::WebView:oDraw*  : Set starting method

To control instrumentation, execute below on the terminal.
callgrind_control -i on : start the instrumentation
callgrind_control -i off : end the instrumentation
callgrind_control -k : kill the Valgrind process.


Ok, output of collected data will be saved at
callgrind.out.[pid]
on the working directory.

So you can read this information from kcachegrind.


'Technology > Working Note' 카테고리의 다른 글

Qt Build  (2) 2011.09.23
Regular Expression  (1) 2011.06.06
kcachegrind 없이 코딩 어떻게 해?  (0) 2011.05.25
Wiki 문법  (0) 2011.03.08
WinCE Memory Leak 잡기  (0) 2011.03.03
Quick Reference Cards  (0) 2011.02.26
Trackback 3 and Comment 0
몇가지 기억해야 할 대목을 기록한다.

  • 버그는 나왔을때 잡아야 한다.
    • 안그러면 깨진 창문의 법칙처럼 기강이 해이해 진다.
    • 버그를 나중에 한꺼번에 잡겠다는 계획은 프로젝트를 Death match로 끌고간다.
  • TDD를 하자. 그래야 리팩토링도 할 수 있다.
  • 하이젠버그는 메모리로깅으로 원인을 밝히자. 스레드마다 로컬메모리를 잡아야 메모리 동기화를 막을 수 있다.
  • 성능 프로파일링을 해서 병목지점을 없에자.
  • 개발에서 다음은 필수다
    • 전자동 테스트 하니스 : TDD
    • 소스관리 시스템 : GIT
    • 전자동 빌드 시스템 : Maven, Boost.Build
    • 일일 빌드나 지속적인 통합 : chromium build bot 같은것
      • checkout 받을때 마다 빌드한다.
      • 빌드하고 자동화된 테스트를 한다.
      • 빌드에 정적 분석을 통합하자
  • 소스 관리 시스템에서 브랜치는 꼭 필요할 때만 하자
  • 개발자 머신에서 릴리즈 버전을 빌드하지 말라. 빌드머신을 이용하라.
  • 제품상태에서는 견고하게, 디버깅할 때는 깨지기 쉽게
    for (i=0; i < count; ++i)
           <loop code>
           assert i == count;
  • 빅뱅은 안된다
  • 자기가 싼똥은 자기가
  • Resouce

'Creativity > Book' 카테고리의 다른 글

핵의학 길잡이  (1) 2011.06.03
Java Concurrency in Practice  (0) 2011.05.15
Debug it! 실용주의 디버깅  (1) 2011.02.19
생각하는 뇌, 생각하는 기계  (0) 2010.09.20
읽고싶은 개발 서적  (0) 2010.08.10
Java책 추천  (0) 2010.07.28
Trackback 4 and Comment 1