私はubuntuディストリビューションから取り出したemacs lispパッケージに問題があります。パッケージはJDEEであり、ファイルを開くたびに 'Args out of range:63'、0,4 'がミニバッファにあり、バッファがメッセージになります。この脆弱性は昨年9月に報告されたようだが、対策は講じられていない。私はemacs初心者ではなく、elispコードを自分で書いていますが、このようなことは一度もデバッグしようとはしませんでした。私は、このエラーが少なくともどこから問題が発生しているのアイデアを得るときに、デバッガでファイルのロードを停止したいと思います。 「エラー時にデバッガを入力する」のelispマニュアルのセクション18.1.1を読んだが、debug-on-error、debug-ignored-errors、およびdebug-onの値のさまざまな組み合わせで再生した後にファイルをロードしようとした-signalは効果がないようです。誰かが私の次のステップのための提案を持っていますか?実行中のEmacs Lispプログラムを中断する
答えて
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)
を呼び出してルーチンを再定義することができます。
JDEEが何らかの形でデバッグ時エラーを抑制しているとします。おそらく、エラーメッセージ「範囲外です」のファイルをgrepします。デバッグ中にの代わりに(load "foo.el")
のようなコマンドを入力して、バイトコンパイルされた.elc
ファイルではなく、コンパイルされていない.el
ファイルをロードしてください(バイトコンパイル済みコードを実行している場合はデバッガで確認できます)。
find-grep
を使用しているときに誤って(current-time-string)
を自分のスクリプトの1つに再定義しても同じエラーが発生しました。
上記のM-x edebug-defun
ヒントを使用すると、エラーを示すコードをステップ実行したときに、(current-time-string)
の呼び出しを見て問題を見つけることができました。
あなたのケースでどの程度役立っているかわかりません。
-1 "範囲外の引数"はかなり一般的なエラーです。さらに、問題の原因となるデバッガを起動する方法はありません。 – nschum
- 1. Powershell - 外部プログラムの実行中にスクリプトを中断する
- 2. なぜこのEmacs Lispスニペットはlist-colour-displayを中断しますか?
- 3. デバッグのためのjavascriptでの実行の中断/中断
- 4. 実行中の下位のlisp
- 5. シバンスクリプトとしてのLisp対SLIMEで実行中のLisp
- 6. SIGPIPE実行中のプログラム
- 7. プログラムの実行中にsigsegv
- 8. ターミナルで実行中のemacsメニューオプション
- 9. 並行性 - 未来を中断せずに中断する
- 10. 実行中のプログラムをMATLABで中止するには?
- 11. REPL ILoopをプログラム的に中断する
- 12. Java、スレッドを中断(中断)
- 13. アプリケーションをプログラムで中断/閉じる
- 14. emacsの中でlynxテキストWebブラウザを実行する
- 15. HTML - プレタグの行を中断する
- 16. Linux上で実行中のプログラムのディレクトリ?
- 17. ボックスメッセージなしのトリガー実行を中断する(tsql)
- 18. アプリケーションサーバー内でばねプログラムを実行中
- 19. AndroidでCプログラムを実行中
- 20. 実行中にemacsファイルを再コンパイルする
- 21. VMで実行中のプログラム生成エラー
- 22. gdb内で実行ループを中断する
- 23. いつ実行して、Django管理コマンドを中断する
- 24. Pythonのthreading.Condition.wait()はすぐに実行を中断しますか?
- 25. emacs lispスクリプトの編集中にフライチェック警告を無効にするには?
- 26. BufferedWriter - プログラム実行中に途中で終了したストリーム
- 27. JavaScript関数の実行を中断できますか?
- 28. 実行中のプログラムと平行に、cppでタイマーを実行する
- 29. testngの実行中にプログラムによるプロファイリングを行う方法
- 30. 実行中にFTPホストサーバーから切断する方法は?
使用しているEmacsのバージョンと、コマンド、キーストロークまたはメニューバーの項目を使ってファイルを開く方法を教えてください。 –
私はLaunchpadでこのバグを報告した人です。あなたは "私もあそこ"に追加してもらえますか?メンテナが注目してくれるかもしれませんか? https://bugs.launchpad.net/ubuntu/+source/cedet/+bug/264498 –
もちろん、パッチを提出することも大丈夫です;-) –