it-swarm-pt.tech

Como depurar / monitorar o Emacs para descobrir por que ele está usando tanta memória?

Estou usando GNU Emacs 23.1.50.1 (x86_64-pc-linux-gnu, GTK + versão 2.18.0) e inicio minha sessão do Emacs dentro da tela GNU.

Desde que atualizei para o Ubuntu 10.04 e a versão de emacs-snapshot, encontrei alguns problemas. Às vezes, o Emacs monopoliza tudo RAM mais a mesma quantidade de espaço de troca (2 + 2 GB) e também consome todo o tempo da CPU. Quando envio o processo para um SIGTERM, o processo pára de consumir tempo de CPU, mas a enorme quantidade alocada de memória permanece. O Emacs em si não leva nenhuma sequência chave. Normalmente, eu envio o processo a SIGKILL e ele morre.

Agora eu quero descobrir onde o bug (se houver) está localizado e quero fazer alguma depuração. Não vejo razão especial para esse comportamento. Às vezes, começa depois que o Emacs é iniciado novamente, às vezes eu posso trabalhar um dia inteiro sem problemas, às vezes acontece no meio. Então, estou procurando um tipo de depuração ou monitoramento do processo.

Eu tentei strace, mas isso gera muita saída. A saída Strace de uma sessão de edição poderia facilmente preencher todo o meu disco rígido. Executar o Emacs dentro do gdb também não funcionaria, porque se bem me lembro, o Ubuntu constrói o software sem símbolos de depuração. Então, você tem algum conselho sobre como encontrar o (possível) bug? O que você sugeriria?

4
qbi

Eu encontrei a resposta para isso por acidente. O problema não era o emacs, mas um chaveiro com defeito no GNOME. Quando inicio o Emacs sem o daemon do chaveiro, tudo está bem. Desativá-lo resolveu meu problema aqui.

1
qbi

Talvez o pacote emacs-snapshot-dbg possa ser de seu interesse?

"Este pacote contém os símbolos de depuração úteis para depurar o Emacs."

1
andol

No momento, estou tentando salvar todo o conteúdo do buffer de mensagens em um arquivo e espero encontrar algo útil:

(with-current-buffer "*Messages*" (auto-save-mode t))
0
qbi