프로세스 동작을 추적하려면 Linux의 acct(BSD 프로세스 통계)를 사용해야 합니까?

프로세스 동작을 추적하려면 Linux의 acct(BSD 프로세스 통계)를 사용해야 합니까?

slapd때때로 아무 이유 없이 중지되는 데몬 프로세스( )가 있습니다 . 세그폴트가 발생하지 않습니다. 로그에는 특별한 내용이 없습니다.

그래서 제가 사용하려는 것은 acct프로세스의 수명주기, 특히 종료 값을 추적하는 것입니다. man커널이 값을 기록했음을 나타냅니다 . 놀랍게도 내 dump-acct정보는 표시되지 않습니다 ...

print_pacct_record()함수에 다음 줄을 추가하여 소스를 변경 해야 했습니다 .

(void)fprintf(out, "%4u|", rec->ac_exitcode >> 8);

편집: 이 변경 사항은최근 추가된 주류.

하지만 이것만으로는 문제를 찾기에는 부족하다고 생각합니다.

프로그램 종료 방법을 추적하는 더 좋은 방법이 있습니까?예를 들어 스택 추적이 흥미로울 것입니다. "마지막 순간 추적"이 더 좋을 것입니다.

strace나는 둘 중 하나를 생각했지만 ltrace프로그램은 "자체 중지"되기 전에 며칠 동안 실행될 수 있습니다. 성능에 영향을 미치는 "추적"이 걱정됩니다. 제가 도움을 드릴 수 있을지 모르겠습니다 gdb.

답변1

strace해당 옵션을 사용하고 출력을 파일로 리디렉션하면 어떻게 되나요 -o?

[root@host ~]# strace -o /root/slapd_strace.log slapd --parameters --you --want

답변2

strace또는 아래에서 screen실행 해 보십시오 tmux. 실행한 후에는 연결을 끊고 필요할 때만 다시 연결할 수 있습니다. 페이지 상단으로 스크롤되는 중요한 단서에 대해 걱정할 필요조차 없도록 screen스크롤 버퍼를 유지하십시오(아마도 그럴 것입니다 ).tmux

screen -h 1000
strace ...
# disconnect with Ctrl-a d

~ 후에

screen -r

관련 정보