2

ubuntu ディストリビューションから取り出した Emacs Lisp パッケージに問題があります。パッケージは JDEE で、ファイルを開くたびにArgs out of range: "63", 0, 4ミニ バッファーとバッファーでエラーが発生します。*Messages*このバグは昨年 9 月に報告されたようですが、対策は講じられていません。私は自分で Elisp コードを書いたことがあるので、emacs の初心者ではありませんが、このようなものをデバッグしようとしたことはありません。このエラーが発生したときに、デバッガーでファイルの読み込みを停止して、少なくとも問題の原因を突き止めたいと考えています。「エラー時にデバッガーに入る」に関する Elisp マニュアルのセクション 18.1.1 を読みましたがdebug-on-error、 、debug-ignored-errors、およびの値のさまざまな組み合わせで遊んだ後にファイルをロードしようとしました。debug-on-signal効果がないようです。私の次のステップについて何か提案はありますか?

4

3 に答える 3

7

debug-on-error が機能しない場合は、ソース自体から始めます。問題の原因となっているキーバインド/イベントを見つけて、機能を見つけます。

C-h k <keystrokes>
M-x find-function <function-name-from-above>

さて、ソースにたどり着いたら

M-x edebug-defun

次にキーを押したときに、プログラムをステップ実行できるはずです。その時点で、どの部分がエラーを引き起こしているかを確認でき、そのようにドリルダウンできます。

変数'stack-trace-on-errorを設定して、犯人を見つけることができるかどうかを確認することもできます (ただし、'debug-on-error通常は私には機能しますが、なぜ機能しないのかはわかりません)。

最後の手段として (うまくedebug-defunいかない場合)、 を呼び出してルーチンを再定義することができます(debug)

于 2009-04-30T05:48:42.543 に答える
-1

自分のスクリプトのいずれかでfind-grep誤って再定義した後に使用すると、同じエラーが発生しました。(current-time-string)

上記のM-x edebug-defunヒントを使用して、コードをステップ実行したときに、への呼び出しを見てエラーが発生したときに問題を見つけることができました(current-time-string)

これがあなたの場合にどれほど役立つかわかりません。

于 2011-01-05T10:43:29.840 に答える