Ubuntu 20.04
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=zdr55&logNo=222003486778
Ulimit -a
1. 코어덤프 파일 크기
/etc/security/limits.conf
* soft core unlimited
* hard core unlimited
대상 프로그램을 서비스로 실행하면 서비스 description에 아래 항목 추가
[Service]
LimitCORE=infinity
2. 경로
/etc/sysctl.conf
kernel.core_pattern = /원하는/절대/경로/%h-%e-%t-%p.core
pport 데몬 비활성화 (비활성화 안하면 시스템 reboot 시 설정값이 초기화 됨)
sudo systemctl stop apport.service
sudo /lib/systemd/systemd-sysv-install disable apport
설정 적용하기
sudo sysctl -p
확인하기
cat /proc/sys/kernel/core_pattern
3. 코어덤프 생성 테스트 (프로세스 강제종료)
ps -ef | grep {PROCESS_NAME}
sudo kill -s SIGSEGV {PID_NUM}
sudo apt-get install python3.8-dbg
gdb python3 /var/crash/kay-python3-1630632231-1431.core
(Gdb) py-bt <------- 이게 끝판왕
(Gdb) py-list
//////////////////////////////////////////
setuid로 uid 설정한 프로그램은 기본적으로 core 덤프 파일이 생성되지 않는다.
(core 파일이 안생겨서 삽질했음..)
다음으로 확인 가능하다.
$ cat /proc/sys/fs/suid_dumpable
0
(기본값=0. 0이면 core 파일 생성하지 않는다.)
이 값을 바꾸거나, /etc/sysctl.conf 파일에 다음을 추가하고 적용하면 된다.
fs.suid_dumpable = 1
(수정 후 "sysctl -p")
"man core" 로 상세 내용 확인 가능하다.
//////////////////////////////////////
실행 중인 프로세스를 강제 종료하지 않으면서 덤프를 남기고 싶을 때가 있다. (예를 들면 CPU 100% 상황이라던가...)
이럴 땐 gdb에 포함된 gcore를 이용하면 쉽게 남길 수 있다.
일단 ps -e | grep <프로세스 이름>으로 pid를 구한 후,
//////////////////////////////////////
[C++] WSL을 경유하거나 SSH로 원격 리눅스 머신을 경유해서 리눅스 덤프를 시각적으로 디버깅하기
///////////////////////////////////
https://gist.github.com/toolness/d56c1aab317377d5d17a
sudo apt-get install python3.8-dbg
'IT > python' 카테고리의 다른 글
pynecone 소개 (0) | 2023.01.29 |
---|