본문 바로가기

Programming/Debug2

Cachegrind - cache, branch prediction 측정/분석/프로파일링 프로그램을 최적화하다가 if문 순서에 따른 성능이 이상하게 나와서 branch hazard와 관련한 성능 측정이 필요한 일이 생겼다. 구글링 결과 Valgrind를 이용하면 측정할 수 있을 것 같다. Valgrind Valgrind는 동적 분석 도구를 구축하기 위한 프레임 워크이다. 메모리 관리, 스레딩 버그 등등을 감지하고 프로그램을 자세하게 프로파일링 할 수 있는 도구들이 있다. 그중에서도 CacheGrind 기능을 이용하면 캐시 미스(cache miss), branch mis-prediction 등 cpu 단에서의 오버헤드들을 관찰할 수 있고, 성능 향상에 이용할 수 있다. Valgrind는 오픈소스로 GNU Genral Public License 2에 따라 무료로 이용할 수 있다. 사전 지식 일반.. 2021. 4. 15.
gdb - 간단한 명령어/사용법/단축어 정리(cheat sheet) GDB를 이용해 간간히 디버깅 하긴 했지만, 자주 사용하지 않아서 익숙하지 않았다. 앞으로 사용할 때마다 검색시간을 줄이기 위해 내가 사용하는/했던 gdb 명령어를 정리해놓기로 했다. 명령어를 정리하다가 마스코트를 찾아보았는데, gdb 마스코트는 위 그림의 금붕어이고, 이유를 찾아보니 벌레(버그)를 잡아먹고 물을 쏘아 벌레를 죽인다나 뭐라나.. 아무튼 그렇다고 한다. 급한 분들을 위한 cheat sheet 사전 조건 컴파일 시 -g 옵션을 주어야 함. GDB 실행 디버깅하기 위해 가장 먼저 해야 할 것은 해당 프로세스를 대상으로 gdb를 실행해야 한다. 여기서부터 설명되는 명령어는 대부분 단축어가 있다. 단축이 되는 글자를 파란색으로 표시하겠다. 중단점 설정/확인/해제 break : 중단점을 설정한다. .. 2020. 7. 30.