디버깅이란 말 그대로 버그를 잡는다는 뜻이다.

코딩을 잘하는 사람이 대체로 디버깅도 잘하는 법이지만, 아무래도 디버깅을 유별나게 잘하는 사람들이 있다.
또, 디버깅 실력은 사람의 실력도 중요하지만 그가 사용하는 툴의 능력도 결코 무시할 수 없는 것 같다.

Visual C++이나, Eclipse같은 툴을 쓸 수 있다면야 참 좋겠지만,
아무래도 임베디드 환경에서 이런 호사는 기대하기 힘들고
심지어 gdb마저도 쓰기 힘든 경우가 많다.

이럴 때 strace, ltrace를 사용해보는 것도 좋을 듯 싶다.
지금까지 gdb없으면 디버깅 못한다고 짧은 생각을 해왔는데 ltrace를 보니 때론gdb보다 뛰어나다는 생각마저 든다.

ltrace 는 라이브러리상에 호출되는 symbol들의 이름을 출력해준다.
콜 스택을 보여주진 못하지만, API들이 순차적으로 호출되는 흐름을 보여주기 때문에
만약 비정상적인 동작을 할 때,
또는 이상하게 시간이 많이 걸릴 때
문제를 추적하는데 도움을 줄 수 있다.

물론 함수콜만을 보여주기 때문에 특정 함수 내부에서 일어나는 코드들을 보장못하지만 코드의 흐름을 분석하고 이해하는데 큰 도움이 된다.

또, 해당 함수를 수행하는데 걸린 시간을 출력할 수 있어서, 전체적인 수행시간에 어떤 부분이 많은 시간을 잡아먹는지 분석도 가능하다.

'프로그래밍 언어 > C/C++' 카테고리의 다른 글

gcc 업그레이드 (4.5.0)  (0) 2010.07.21
Header안에 static 변수  (0) 2010.02.21
디버깅하는 법 - 툴 - ltrace  (0) 2010.02.18
unresolved symbol 에 관하여  (0) 2010.01.27
[Python]파일명 바꾸기  (0) 2009.09.02
AspectC++  (0) 2009.08.31

+ Recent posts

티스토리 툴바