call_stack 을 구현할려고합니다.
글쓴이: updateing / 작성시간: 일, 2010/09/19 - 12:47오후
리눅스에서 gcc기반으로 디버거를 만들고 있습니다.
리눅스에서 개발한지는 2개월 정도 되었구요
디버거 기능중 callstack 이라는 기능을 구현할려고 하는데
함수의 시작주소를 가져와서 elf와 매칭하여 현재 프로세서 가 어떻게
돌아가는지를 보여주고 싶은데
도무지 어떻게 해야 할지 감이 안오네요
레지스터 정보 struct pt_reg regs ptrace() 통해 가져와서
ebp+0x04 를 해도 다음 주소가 안나오네요
call_stack 에대해서 좀 알려주세요 ^^*
Forums:
스택만 두고서는
스택만 두고서는 구할 수는 없고,
디버깅 정보에 함수가 스택에 저장하는 내용이 들어있다고 하는데,
뭐 자세히는 잘 모르겠습니다.
감사합니다.
ELF 섹션안에 디버깅 정보에 함수 네임정보가 있어요 주소랑요
근데 call_stack을 구현할려면 함수의 흐름을 보여야 하잖아요
그러니 이 섹션 정보랑 매치할 함수의 흐름을 어떻게 해야 할지 ...ㅜㅜ
대충 개념적으로는
대충 개념적으로는 간단하긴 한데... 관련자료가 하나도 없네요 - ㅅ-)
뭐 glibc의 backtrace 함수를 참고하시는게 어떨까 합니다.
ptrace(syscall)로도 가능하다고는 하는데, 글쎄요 '~');;;