coredump 에서 함수심볼이름이 ?? 로 나옵니다.

trymp의 이미지

linux 에서 C 프로그램의 경우 SIGSEGV 로 죽는 경우 core dump 를 남기는 것으로 알고 있습니다.

근데 gdb 로 보니 libc 관련 함수에서 죽은 것처럼 보이고

call trace 정보에는 함수이름이 ??? 로 출력됩니다.

이렇게 출력이 되다 보니 추적하기가 힘듭니다

libc 관련 함수이름을 정상적으로 출력하려면 어떻게 해야 하나요?

알려주시면 감사하겠습니다.

김정균의 이미지

compile 시에 optimizing option 이 높았거나 또는 해당 binary 가 strip 이 되었을 경우일 겁니다.

RHEL, CentOS 의 경우에는 glibc-debuginfo 패키지를 설치해서 디버깅을 시도해 볼 수 있습니다.
http://ships95.blogspot.com/2017/12/gdb-missing-separate-debuginfos-use.html 참조 하세요.

svperbeast의 이미지

corrupt stack인 경우일 수 있는데, stack에 할당한 버퍼크기보다 더 큰 메시지를 복사하거나 문자열을 복사하는 부분이 있는지 점검해 보세요, -fstack-protector-strong 옵션을 켜고 컴파일 해보셔도 좋을 듯 합니다..