gdb core 파일 분석중에.. 질문이 있는데요..

stypr의 이미지

29번 줄 
printf("\n(unsigned long) &buf is [%08x]\n\n",(unsigned long) &buf);

(gdb) bt
#0  0x08048410 in main (argc=-1073744360, argv=0xbffff618) at test.c:29
#1  0xbffff618 in ?? () <-- 여기 실행하다가 죽었다는 뜻인가요??

(gdb) x/x 0xbffff618  <-- 이부분을 보면 nop값인데 ㅠ.ㅠ 어케 죽져?? -_-;;
0xbffff618:     0x90909090 

gdb에 대해 궁금해서 질문 올립니다..

이준의 이미지

풀소스로 보여주시면 안될까요? ^^

Hyo-Sung Lee(李曉星/Mark Lee)

KRSF Certified Inline Skate Instructor
Fitness Inline Skate Trainer
Mogul&Freeride Skier
IDOne ski rider
Cafe MogulBuddy/KoreaMogul
E-Leader(C) Programmer

익명 사용자의 이미지

그게 아니고 ???부분에서 main 을 호출했다는 의미입니다.
bt에서 가장 위에 있는 것이 가장 나중에 불린 함수입니다. 보통 OS나 libc등에서 main을 호출하기 전에 불리는 부분이니 별로 신경 쓰지 않아도 될 듯합니다.

saxboy의 이미지

비교적 정상적인 segfault를 받았다면 심벌이 ??로 표시되는 일은 없습니다. 심벌이 ??로 표시된다는 것은 크래시 당시 이미 스택이 "완전히" 깨져 있다는 의미이며 실제로 이 core는 별로 디버깅에 도움이 되지 못한다는 의미가 되겠습니다.