리눅스에서 프로그램을 실행하다 보면 "sementation fault 어쩌구저쩌구" 하는 메시지를 출력하고 프로그램이 종료되는 경우가 있습니다.
대부분 메모리 문제로 다음 원인때문에 발생할수있습니다.
- 보호된 메모리에 접근을 시도하는 경우
- 읽기 권한이 없는 프로세스가 읽기나 쓰기를 시도하는 경우
- 할당된 메모리 영역을 벗어나서 접근할 경우 - 할당된 메모리보다 더 많은 데이터를 쓰려고 하는 경우
하지만 이런 문제가 발생할 경우 친절하게도 덤프파일(core)을 생성해 줘서 디버깅을 할 수 있도록 정보를 제공합니다.
그런데, 간혹 덤프 파일이 생성되지 않고 프로그램이 종료되는 경우가 있습니다.
다른 원인이 있을 수 있겠습니다만, 현재 시스템 설정을 확인할 필요가 있습니다.
여기서는 "ulimit" 명령어를 사용해서 아래와 같이 확인해 보겠습니다.
$ ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 95709
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 65536
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 95709
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
"core file size"가 0이네요. 이것을 변경하려면 "-c" 옵션으로 설정할 수 있습니다.
$ ulimit -c unlimited
$ ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) unlimited
-m: resident set size (kbytes) unlimited
-u: processes 95709
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 65536
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 95709
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
위 설정을 계속 사용하시려면 시스템 파일을 수정해야 합니다.
'Linux > Tips&News' 카테고리의 다른 글
Error: listen EACCES: permission denied 0.0.0.0:80 (0) | 2023.09.22 |
---|---|
ls 명령어 실행시 날짜포맷 변경 (0) | 2023.08.04 |
GNU_LIBC_VERSION 확인방법 (0) | 2023.06.28 |
An error occurred during the signature verification (0) | 2023.06.17 |
Ubuntu에서 deb 파일 설치하기 (0) | 2023.05.26 |