gdb에서 core dump 디버깅
Programming/System 2010. 9. 8. 23:20
일단 dump파일을 쓸수 있는 환경 인지 조사해 본다
만약 "0"라면 크기를 늘립시다..... 한.. 100000? 뭐 값은 알아서.....ㅋ
아마.. 따로 설정하지 않는이상 어지간한 배포판에서는 "0"로 설정되어 있을겁니다....
(특정배포판에 따라서.... 이 값이 고정되어 있을수도 있으므로 주의하자. 특히 레뎃, 페도라는......)
자..... 이젠 세그멘테이션 폴트를 일으키면 덤프파일을 내뱉게 됩니다 >_<
그담엔 gcc에서 실행하는 방법...
순서대로 적어야된다는..... 안그럼 에러(?) 뜬다는.....
그름 인제 다음과 같이 심볼 읽어들은 다음에, 틀린부분을 뱉어줍니다.
ps; 여러분! gcc컴파일할때 디버그 정보를 보려면 '-g' 옵션을 붙이는것은 다 아시죠? (네에~)
이리 쉬운걸 몰라쓰까여...... 분명
"세그멘테이션 폴트 일어나면 덤프파일을 만든다" 까지는 알고 있었는데....
(어연 옛날? 학교 유닉스 서버에서는 분명이 덤프파일이 떳었던걸로 기억하는지라 그때부터 알았는데..... )
왜 눅스에서는 덤프파일은 안나오지... 이상하다.. 라고 "생각" 만 했었거든요 -_-....
(분명히 설정값 건드리면 나올거라고 생각은 했는데)
왜 GDB랑 생각을 안했는지 미스테리...
ulimit 명령어가 있었다는것도 지금 알았네요.... GDB는 초보라능.....
- 지금 프로그램 띠워나서... 세그폴트날때까지 기대리고 있는데... 안죽네여 아놔.. 아깐 그렇게 잘 죽더니만
ulimit -c
만약 "0"라면 크기를 늘립시다..... 한.. 100000? 뭐 값은 알아서.....ㅋ
아마.. 따로 설정하지 않는이상 어지간한 배포판에서는 "0"로 설정되어 있을겁니다....
(특정배포판에 따라서.... 이 값이 고정되어 있을수도 있으므로 주의하자. 특히 레뎃, 페도라는......)
ulimit -c 100000
자..... 이젠 세그멘테이션 폴트를 일으키면 덤프파일을 내뱉게 됩니다 >_<
그담엔 gcc에서 실행하는 방법...
순서대로 적어야된다는..... 안그럼 에러(?) 뜬다는.....
gcc <exec_filename> <dump_filename>
그름 인제 다음과 같이 심볼 읽어들은 다음에, 틀린부분을 뱉어줍니다.
ps; 여러분! gcc컴파일할때 디버그 정보를 보려면 '-g' 옵션을 붙이는것은 다 아시죠? (네에~)
Reading symbols from /usr/lib/libpng14.so.14...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libpng14.so.14
......
Reading symbols from /usr/lib/libXdmcp.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Core was generated by `./qq'.
Program terminated with signal 11, Segmentation fault.
#0 main (argc=1, argv=0xbfdae444) at /tmp/qq.c:26
26 *a= 3;
Loaded symbols for /usr/lib/libpng14.so.14
......
Reading symbols from /usr/lib/libXdmcp.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Core was generated by `./qq'.
Program terminated with signal 11, Segmentation fault.
#0 main (argc=1, argv=0xbfdae444) at /tmp/qq.c:26
26 *a= 3;
이리 쉬운걸 몰라쓰까여...... 분명
"세그멘테이션 폴트 일어나면 덤프파일을 만든다" 까지는 알고 있었는데....
(어연 옛날? 학교 유닉스 서버에서는 분명이 덤프파일이 떳었던걸로 기억하는지라 그때부터 알았는데..... )
왜 눅스에서는 덤프파일은 안나오지... 이상하다.. 라고 "생각" 만 했었거든요 -_-....
(분명히 설정값 건드리면 나올거라고 생각은 했는데)
왜 GDB랑 생각을 안했는지 미스테리...
ulimit 명령어가 있었다는것도 지금 알았네요.... GDB는 초보라능.....
- 지금 프로그램 띠워나서... 세그폴트날때까지 기대리고 있는데... 안죽네여 아놔.. 아깐 그렇게 잘 죽더니만
'Programming > System' 카테고리의 다른 글
터미널에서는 GDB가 아니라 CGDB를 씁시다. (4) | 2010.09.11 |
---|---|
gdb 에서 thread 생성/종료 메세지 안나오게 하기 (2) | 2010.08.18 |
mmap 사용시 알아둘 사항 (버스오류) (0) | 2010.05.31 |
FAT12과 FAT16의 부트레코드의 구성이 같은모양인가 보다 (2) | 2007.07.27 |
부트섹터에서 프로그램 실행시키기. (14) | 2007.07.21 |