Devo usar o acct (contabilidade de processo do BSD) do Linux para rastrear um comportamento do processo?

1

Eu tenho um processo daemon ( slapd ) que às vezes pára sem razão aparente. Nenhum segfault ocorre. Nada de especial nos logs.

Estou tentando usar acct para acompanhar a vida do processo, especialmente seu valor de saída. O man diz que o kernel registra esse valor. Surpreendentemente, meu dump-acct não mostra essa informação ...

Eu tive que mudar a fonte adicionando esta linha na função print_pacct_record() :

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

EDIT: esta alteração foi adicionado recentemente ao mainstream .

No entanto, sinto que isso não será suficiente para descobrir qual é o problema.

Existem maneiras melhores de rastrear como o programa sai? Um rastreamento de pilha, por exemplo, seria interessante. O "último rastreamento de segundos" seria ainda melhor.

Eu pensei em strace ou ltrace , mas o programa pode ser executado por dias antes de "parar". Temo que o "rastreamento" tenha impacto no desempenho. Eu não sei se gdb poderia ajudar.

    
por Totor 16.03.2015 / 20:05

2 respostas

1

E se você usar strace e redirecionar a saída dele para um arquivo usando a opção -o ?

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

    
por 17.03.2015 / 14:30
0

Tente executar strace em screen ou tmux . Quando estiver em execução, você poderá desconectar e reconectar somente quando necessário. screen mantém um buffer de rolagem (como pode ser tmux ) para que você nem precise se preocupar com dicas importantes rolando para fora da parte superior da página.

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

Mais tarde

screen -r
    
por 16.03.2015 / 21:17