본문 바로가기

OS/리눅스

[리눅스] core 파일 생성 설정.

반응형

리눅스에서 프로그램이 비정상적으로 죽었을때 디버깅을 할수있게 생성해주는 core 파일을 남기도록 설정하기.

 

개발하고 테스트 중인 프로그램이 장렬하게 core 가 나면서 전사 하셨는데,

 

어디서 죽으셨는가 하고 gdb 로 디버깅을 해보려 하니

 

그 흔한 core 파일조차 남기지 않고 죽어버렸네요.

 

그래서 조금 검색해보니 바로 나온 답..

 

 

 

 

#> ulimit -a

core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 16346
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 16346
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

 

 

저기 빨간 부분이, core 파일 사이즈에 대한 부분인데 0 으로 되있으니..

생성이 되지 않습니다.

 

 

 

#> ulimit -c unlimited // core 파일 사이즈 변경 명령어.

 

#> ulimit -a

core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 16346
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 16346
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

 

 

 

ulimit 명령어로 -c 옵션을 주고 변경할 사이즈를 입력하면 손쉽게 변경이 됩니다.

 

unlimited 는 제한을 두지 않는걸 말합니다.

 

 

 

아..그리고 이미 실행중인 상태의 프로세스는 적용이 되지 않습니다.

( 물론 되게 하는 방법이 있겠지만.. 찾아보진 않았네요 ^^;; )

 

 

그리고 이렇게 명령어를 통해 변경하는건 재부팅을 하면 그대로 ~ 다시 초기화 되므로

계속 !! 그상태를 유지하고 싶으시다면

 

/etc/profile <- 요 파일을 수정하시면 됩니다.

ulimit -s -c 0 이런식으로 들어가 있으니 찾아보시면 되요 ~

 

그리고 더 간단한 편법은

 

 

bash등의 쉘을 사용하실경우

.bash_profile ( 쉘 프로파일 )안에다

ulimit -c unlimited

요걸 적어두시면 쉘 접속할때마다 알아서 ~ 코어 파일 생성하게끔 변경 되니까

어느 한 계정만 계속 떨구고 싶으시다면,

요런 방법 사용해도 됩니다 ~

 

 

끄읏..

반응형