[해결]gdb에서 printf같은 표준함수의 소스를 볼수 있을까요?
글쓴이: login321 / 작성시간: 토, 2009/05/23 - 1:59오후
(컴파일환경 : centos5.3, gcc)
printf(%d, i) 같은 함수의 경우
(gdb) step 하면 함수 내부로 들어갈 줄 았았는데 그냥 건너뛰네요.
printf함수의 내부로 들어가도록 하고싶습니다.
우선 제 나름 생각한게
c표준라이브러리함수들은 소스파일이 아니라 오브젝트파일로 링크되기 때문에
소스파일이 필요할 것 같습니다.
그래서 리눅스커널 소스를 다운받아서 /usr/src/linux-2.6.29.4 에 압축을 풀었는데
gdb 혹은 gcc가 이 커널소스를 인식을 하도록 해야 할텐데
조언 좀 부탁드립니다.
갈피를 못잡으니 검색을 하려해도 마땅한 검색 키워드 조차 떠오르지 않으니 헤메고 있습니다.
Forums:
glibc
printf는 커널이 아니라 glibc에 있으니까 커널 소스 다운받으셔도 아무 소용 없습니다.
이미 알고계신지도 모르겠지만..
printf 소스만 있다면 gdb --dir=[source directory] 이런 식으로 gdb가 라이브러리의 소스를 인식하게 할 수 있을 겁니다. 표준 라이브러리에는 시도해 본 적이 없어서 잘 될지는 모르겠네요. 아래는 gdb --help에 나온 내용입니다.
--directory=DIR Search for source files in DIR.
http://kldp.org/node/105205
http://kldp.org/node/105205
OTL
답변
답변 감사합니다.
glibc가 커널에 포함되는 건 줄 제가 잘못 알고 있었군요.
답변 주신대로 표준 라이브러리 소스 받아서 gdb에서 dir로 포함시키니 보이네요.
댓글 달기