回答:
に頼る前にgdb、Unix-yオペレーティングシステムを使用している場合は、他の回答に記載されてSIGUSR2いるDEBUGファイルに記載されているように、Emacsプロセスに送信してみてください。
$ kill -SIGUSR2 <emacs_pid_goes_here>
これにより、Emacsは現在のループからLispデバッガーへのブレークを試みます。
または、emacs pidを手動で入力せずにこの1つのライナーを使用します。
$ ps aux | grep -ie emacs | grep -v grep | awk '{print $2}' | xargs kill -SIGUSR2
または、killall利用可能な場合:
$ killall -USR2 emacs
/検索するemacsとk、信号を送信します。Macのアクティビティモニターでも実行できます(メニューから:[表示] | [信号をプロセスに送信])。
を押したときにフリーズが解消した場合C-gは、組み込みのデバッガーを使用できます。M-x toggle-debug-on-quitメッセージを送信する前に入力し、C-gフリーズしたらヒットし、表示される*Backtrace*バッファーを調べます。
解決C-gしない場合、おそらくCコードでフリーズが発生しているため、などの外部デバッガーを使用する必要がありますgdb。それを行う方法についてのヒントを提供C-h C-dするDEBUGファイルを見るためにヒットします。(EmacsリポジトリーのWebインターフェースでDEBUGファイルを読むこともできます。) この答えはgdb、Emacsでの使用方法についての詳細です。
C-g数回ヒットする必要がある場合がありますC-g C-g C-g。
M-x debug-on-entry THE-COMMAND、次にを使用してデバッガーをステップ実行しますd(または場合cによってはいくつかのステップをスキップします)。ソースコードを別のフレームで開いたままにしておくと、デバッガーが実行していることを追跡できます。ここに表示される内容を報告するか、Emacsのバグを示唆していると思われる場合は、を使用してくださいM-x report-emacs-bug。