백트레이스 할 수 없는 코어는 무엇인가?
글쓴이: purewell / 작성시간: 수, 2006/04/12 - 5:10오후
시스템 : FreeBSD **** 5.2.1-RC FreeBSD 5.2.1-RC #0: Wed Oct 27
14:27:01 KST 2004 root@****:/usr/src/sys/i386/compile/NEW i386
위 시스템에서 프로그램을 돌렸더니 코어를 퉤!하고
뱉었습니다.
그래서 신나게 'gdb -c core파일 원본실행파일' 을
실행해줬더니...
GNU gdb 5.2.1 (FreeBSD) Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-unknown-freebsd"... Core was generated by `a.out'. Program terminated with signal 11, Segmentation fault. Reading symbols from /lib/libcrypto.so.3...done. Loaded symbols for /lib/libcrypto.so.3 Reading symbols from /usr/lib/libstdc++.so.4...done. Loaded symbols for /usr/lib/libstdc++.so.4 Reading symbols from /lib/libm.so.2...done. Loaded symbols for /lib/libm.so.2 Reading symbols from /usr/lib/libc_r.so.5...done. Loaded symbols for /usr/lib/libc_r.so.5 Reading symbols from /lib/libc.so.5...done. Loaded symbols for /lib/libc.so.5 Reading symbols from /libexec/ld-elf.so.1...done. Loaded symbols for /libexec/ld-elf.so.1 #0 0x00000000 in ?? () (gdb) bt #0 0x00000000 in ?? () (gdb)
당연히 컴파일할 때 -g 옵션을 깔끔하게 넣어줬는데
저렇게 나오는 이유는 무엇인가요?
최소한 bt하면 _start, main은 나와줘야 예의아닐까요?
Forums:
가끔 잘못된 포인터
가끔 잘못된 포인터 연산으로, call stack이 망가지는 경우가 있습니다. 이런 경우, backtrace를 할 수 없죠. :) efence나 valgrind로 한 번 테스트해보기 바랍니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
예를 하나 살짝 남겨주시면...
답변 감사드립니다.
> ㅂ<); 그런데 잘못된 포인터 연산으로 엉켜진 콜스택... 이해가 잘 가지 않아 예를 살짝쿵 하나 들어주셨으면 하는데요.
_____________________________
언제나 맑고픈 샘이가...
http://yubink.com - 강아지 필요하세요?
http://purewell.biz - 헙!!
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
댓글 달기