이 벨로우즈 코드는 마지막 줄에서 중단됨 (코어 덤프 됨)을 생성합니다.중단됨 (코어 덤프 됨)에 대한 추가 정보가 필요합니다.
코드 :
#include <stdio.h>
#include <malloc.h>
int main()
{
char *ptr;
ptr=malloc(sizeof(char)*10);
free(ptr);
free(ptr); // core dumped
}
출력은 다음과 같습니다
는 여기에 내가 알고 관심*** glibc detected *** ./a.out: double free or corruption (fasttop): 0x091f7008 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x75ee2)[0xb7665ee2]
./a.out[0x804846d]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb76094d3]
./a.out[0x8048371]
======= Memory map: ========
08048000-08049000 r-xp 00000000 fc:00 4070236 /home/gangadhar/a.out
08049000-0804a000 r--p 00000000 fc:00 4070236 /home/gangadhar/a.out
0804a000-0804b000 rw-p 00001000 fc:00 4070236 /home/gangadhar/a.out
091f7000-09218000 rw-p 00000000 00:00 0 [heap]
b75ba000-b75d6000 r-xp 00000000 fc:00 22938319 /lib/i386-linux-gnu/libgcc_s.so.1
b75d6000-b75d7000 r--p 0001b000 fc:00 22938319 /lib/i386-linux-gnu/libgcc_s.so.1
b75d7000-b75d8000 rw-p 0001c000 fc:00 22938319 /lib/i386-linux-gnu/libgcc_s.so.1
b75ef000-b75f0000 rw-p 00000000 00:00 0
b75f0000-b7794000 r-xp 00000000 fc:00 22937623 /lib/i386-linux-gnu/libc-2.15.so
b7794000-b7795000 ---p 001a4000 fc:00 22937623 /lib/i386-linux-gnu/libc-2.15.so
b7795000-b7797000 r--p 001a4000 fc:00 22937623 /lib/i386-linux-gnu/libc-2.15.so
b7797000-b7798000 rw-p 001a6000 fc:00 22937623 /lib/i386-linux-gnu/libc-2.15.so
b7798000-b779b000 rw-p 00000000 00:00 0
b77b1000-b77b4000 rw-p 00000000 00:00 0
b77b4000-b77b5000 r-xp 00000000 00:00 0 [vdso]
b77b5000-b77d5000 r-xp 00000000 fc:00 22937715 /lib/i386-linux-gnu/ld-2.15.so
b77d5000-b77d6000 r--p 0001f000 fc:00 22937715 /lib/i386-linux-gnu/ld-2.15.so
b77d6000-b77d7000 rw-p 00020000 fc:00 22937715 /lib/i386-linux-gnu/ld-2.15.so
bf7e0000-bf801000 rw-p 00000000 00:00 0 [stack]
Aborted (core dumped)
하는 경우에 버려진 이러한 핵심이 발생합니다?
디버거를 사용하지 않고 어떤 행이 발생했는지 확인할 수 있습니까?
(공유 라이브러리에 대한) 어떤 정보가 표시됩니까?
디버깅 기호 (GCC의 경우 -ggdb)로 컴파일하면 오류가 발생한 행을 볼 수 있습니다. 엄밀히 말하면,이 코어 덤프는 컴파일러/실행 플랫폼이 이미'자유로운 '포인터가'자유로운'것이 정의되지 않은 행동이기 때문에 느낄 때마다 발생합니다. – Kninnug
공유 라이브러리 및 해당 사용 권한을 표시하는 이유는 무엇입니까? – SGG
'free'는 (프로그램이 자동으로 링크되는)'libc'에 있기 때문에 코어 덤프가 발생합니다. 좀 더 복잡한 버그에서이 정보는 프로그램이 한 소스 파일의 한 줄에서 충돌 할 수 있지만 실제 버그는 링크 된 라이브러리에있을 수 있기 때문에 문제가 정확히 어디에서 발생했는지 추적하는 데 유용합니다. – Kninnug