이 코어 덤프 파일은 디버그 버전 응용 프로그램에서 생성 된 것보다 크기가 크고 1.6G 바이트 크기입니다.
놀랄 필요가 없습니다. 코어 덤프에는 응용 프로그램 메모리의 수정 가능한 세그먼트가 들어 있습니다. 디버그 정보로 컴파일 된 응용 프로그램은 디버그 정보없이 컴파일 된 응용 프로그램과 완전히 동일한 수정 가능한 메모리를 가지며 정확히 동일한 코어 덤프를 생성해야합니다 (다른 컴파일 플래그가 동일하고 응용 프로그램이 반복적으로 실행될 수 있다고 가정).
디버거에서 메모리 덤프를 이해하려면 디버그 정보가 필요합니다. 하지만 디버그 정보 없이도 메모리 덤프를 이해할 수 있습니다. 훨씬 더 수동적이고 지루합니다.
어쨌든 호출 스택을 포함하여 더 많은 정보를 얻을 수 있습니까?
이미에 전화 스택이 있습니다.
가장 좋은 방법은 입니다. 항상 전체 디버그 정보로 애플리케이션을 빌드하십시오.
gcc -O2 -g -c foo.cc -o foo.o
gcc -g foo.o bar.o ... -o app
그런 다음 최종 사용자에게 디버깅을 위해 결과 (대형) 바이너리를 유지하지만 이진의 제거 변형을 제공 :
cp app app-stripped
strip -g app-stripped # removes all debug info from app-stripped
를 이제 앱 제거에서 코어 덤프를 얻을 때, 해당 코어를 분석하려면 전체 디버그 app
을 사용하십시오.
또는 here과 같이 별도의 debuginfo 파일을 사용할 수 있습니다.