web-dev-qa-db-ja.com

Emacsをデバッグ/監視して、なぜこれほど多くのメモリを使用しているのかを調べるにはどうすればよいですか?

GNU Emacs 23.1.50.1(x86_64-pc-linux-gnu、GTK +バージョン2.18.0)を使用していて、GNU画面内でEmacsセッションを開始します。

Ubuntu10.04とemacs-snapshotのバージョンにアップグレードしたので、いくつかの問題が発生します。 EmacsがすべてのRAMに加えて同じ量のスワップスペース(2 + 2GB)を占有し、すべてのCPU時間を消費することもあります。プロセスにSIGTERMを送信すると、プロセスはCPU時間を消費しなくなりますが、膨大な時間です。割り当てられた量のメモリが残ります。Emacs自体はキーシーケンスを取りません。そのため、通常、プロセスにSIGKILLを送信すると、プロセスが停止します。

ここで、バグ(存在する場合)がどこにあるかを調べて、デバッグを行いたいと思います。この動作の特別な理由はわかりません。 Emacsを新しく起動した後に開始することもあれば、問題なく1日中作業できることもあれば、その間に発生することもあります。そのため、プロセスのデバッグまたは監視のようなものを探しています。

straceを試しましたが、出力が多すぎます。編集セッションのStrace出力は、ハードドライブ全体を簡単にいっぱいにする可能性があります。 gdb内でEmacsを実行することも機能しません。なぜなら、私が正しく覚えていれば、Ubuntuはシンボルをデバッグせずにソフトウェアをビルドするからです。では、(可能性のある)バグを見つける方法について何かアドバイスはありますか?あなたは何を提案しますか?

4
qbi

私はこれに対する答えを偶然見つけました。問題はemacsではなく、誤動作しているGNOMEキーリングでした。キーリングデーモンなしでEmacsを起動すると、すべて問題ありません。そのため、無効にすると、ここで問題が解決しました。

1
qbi

おそらくパッケージemacs-snapshot-dbgが興味深いかもしれませんか?

「このパッケージには、Emacsのデバッグに役立つデバッグシンボルが含まれています。」

1
andol

現時点では、Messages-bufferのすべてのコンテンツをファイルに保存しようとしていますが、何か便利なものを見つけたいと思っています。

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