안드로이드 개발 질문/답변
(글 수 45,052)
http://www.androidpub.com/808404 글에 이어서 질문인데요-
제가 만든 C code를 실행하는 도중에, 어떤 함수를 다 실행하고나서 SIGNAL 11 이 발생해서..
어떤 부분이 문제가 되는건지 도무지 감이 안와서요 ㅠ
저번 글에 댓글 달아주신것 보니까,
"GDB에 Symbol을 삭제하지 않은 so 파일을 file로 등록해서 list 명령으로 주소를 넣으면 그 주소에 해당하는 소스가 나옵니다." 라고 하셨는데
제가 워낙 초보라.. (..)
Symbol을 삭제하지 않은 so 파일을 어떻게 얻어야하는지 잘 모르겠어요 ㅠㅠ
나름 검색 열심히 하고 질문 올린다고 하는건데..ㅠㅠ;;;
음.. 전역변수 인덱스는 꼼꼼히 다시 확인했으니까 그 문제는 아닐것같구요,
다른 쓰레드에서 전역변수를 delete 할 수도 있다고 하셨는데, 만약에 그렇다면 어떻게 해결 할 수 있을런지요a;;
전부 다 parameter 로 왔다갔다하기엔 너무 조잡한것 같아서요..a;;
휴. 다음주가 마감인데 막막하네요;; 도와주세요 고수님들- @_@
제가 만든 C code를 실행하는 도중에, 어떤 함수를 다 실행하고나서 SIGNAL 11 이 발생해서..
어떤 부분이 문제가 되는건지 도무지 감이 안와서요 ㅠ
저번 글에 댓글 달아주신것 보니까,
"GDB에 Symbol을 삭제하지 않은 so 파일을 file로 등록해서 list 명령으로 주소를 넣으면 그 주소에 해당하는 소스가 나옵니다." 라고 하셨는데
제가 워낙 초보라.. (..)
Symbol을 삭제하지 않은 so 파일을 어떻게 얻어야하는지 잘 모르겠어요 ㅠㅠ
나름 검색 열심히 하고 질문 올린다고 하는건데..ㅠㅠ;;;
음.. 전역변수 인덱스는 꼼꼼히 다시 확인했으니까 그 문제는 아닐것같구요,
다른 쓰레드에서 전역변수를 delete 할 수도 있다고 하셨는데, 만약에 그렇다면 어떻게 해결 할 수 있을런지요a;;
전부 다 parameter 로 왔다갔다하기엔 너무 조잡한것 같아서요..a;;
휴. 다음주가 마감인데 막막하네요;; 도와주세요 고수님들- @_@
2010.09.27 17:25:01
바이너리에 디버깅 정보를가 있어야 디버깅시 효율적입니다. 디버깅 정보를 추가하는 법은 컴파일할때 -g 옵션을 주시면됩니다.
gdb 뿐만아니라 SIGNAL 11과 같이 잘못된(유효하지 않는)메모리를 참조할경우 발생하는 오류를 쉽게 검출할수 있는 Valgrind라는 툴이있습니다. CentOS나 페도라같은 배포판에 기본적으로 포함이되어있고 실행방법은
디버깅 정보를 포함하여 컴파일하고,
$ gcc -g -o test test.c
인자에 실행 파일이름을 넣어주고 실행을 하면
$ valgrind ./test
소스 코드 어디에서 오류가 발생했는지 정확하게 찾아줍니다.