gdb로 코어 파일을 디버깅하려고하면 더 이상 진행할 수있는 유효한 스택 추적이 표시되지 않습니다 (아래 링크에서보고 된 문제와 유사). 문제를 디버그하려면 어떻게 디버깅해야하는지 알려주세요. 문제를 조사하는 데 도움이되는 모든 포인터 또는 gdb 명령.디버그 방법은 gdb를 사용하여 주소에 액세스 할 수 없습니다
GDB debugging trace with no relevant info (#0 0x2e6e6f69 in ??())
(gdb) where
#0 0x76c0da28 in ??()
#1 0x76c0d9e0 in ??()
#2 0x76c0d9e0 in ??()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
편집은 다음 -g
플래그와 host environment
문제의 가능성을 배제하기 위해, 나는 의도적으로 충돌하는 코드를 추가하고 corefile (핵심 파일)에서 올바른 스택 추적을 얻을 수있었습니다했다. 내가 GDB로 디버그 코어 파일을하려고하면
'-g' 옵션을 사용하여 바이너리를 컴파일 했습니까? –
네, 컴파일되었습니다. –
손상된 스택 메시지가 메모리 액세스에 문제가 있음을 나타낼 수 있습니다 (가장 잘못된 쓰기). [valgrind] (http://valgrind.org)와 같은 다른 도구가 문제를 파악하는 데 도움이 될 수 있습니다. – dvhh