タグ付けされた質問 「debugging」

デバッグは、コンピュータープログラム内のバグまたは欠陥の数を見つけて減らすための系統的なプロセスです。

9
Emacsをフル機能のC / C ++ IDEとして使用する
EmacsをC / C ++ IDEとして使用するために、1年以上試行錯誤を繰り返してきました。私はこれまでわずかな成功しか収めていませんでしたが、途中でいくつかのレンガの壁にぶつかりました。現在、CEDETを使用しようとしていますが、CEDETを効果的に使用する方法を理解するのに苦労しています。 IDEで探している機能は次のとおりです。 ソフトウェア「プロジェクト」の管理。プロジェクト内で検索と置換などの機能を実行できるように、IDEに現在のプロジェクトを構成するすべてのファイルの意味を持たせたい。(ソースツリーに多数のサポートファイルを散らかさずにこれを実現できればいいと思います。プロジェクトごとに複数の集中プロジェクトファイルが必要なのはなぜですか?) 現在アクセスしているバッファに関係なく、IDE内から現在のプロジェクトをビルドする機能。現在のプロジェクトをビルドするキーをバインドできる必要があります。 エラー報告。ビルドツールによって報告されたエラーを見つけるために、500行以上の出力を読む必要はありません。エラーは、エラーごとに1行で、独自のバッファーに表示されることが望ましいです。 プロジェクト内のシンボルの認識、およびそれらが定義されている場所。プロジェクトファイルにあるか、システムインクルードファイルにあるかに関係なく、シンボル定義にジャンプしたい。 視覚的なデバッグ。コードをステップ実行すると自動的に更新されるローカル変数のウォッチリストが必要です。コードにブレークポイントを設定して、次に実行されるコード行を確認できるようにします。 これらの各機能は、EDE、Semantic、GDBなどを使用して一度にまたはもう1つ動作させたために存在することを知っています。問題は、これらの機能のすべてを同時に動作させることができなかったことですなぜなら、通常、各ピースはそれ自体で構成する必要があり、通常、それらすべてを一度に構成し、それらを連携させる方法を理解するのは大変な作業です。 Emacsをフル機能のC / C ++ IDEに変えるためのソリューションは何ですか? 常にすべてを個別に設定する必要がありますか、それともすべての機能を一度に設定する方法がありますか? 編集:この質問に対する良い答えは、与えられた5つの基準をすべて正確に満たす必要はありません。IDEを「フル機能」と見なす前に、表示したい機能の種類のより具体的なアイデアを示すために、リストを提供しました。CEDETがこの法案に適合する可能性は十分にありますが、ゼロからセットアップする方法に関する段階的なチュートリアルをまだ見つけていません。

2
凍結したEmacsのデバッグ
メールにmewを使用しています。SMTPのメールプロバイダーでTLSを使用する必要があります。ただし、それを呼び出そうとすると、Emacsがフリーズします。 この機会に、Emacsパッケージの詳細を学びたいと思います。この問題をデバッグするにはどうすればよいですか?Common Lispのような、ある種の組み込みデバッガーはありますか?ロギングを使用できますか?

1
Emacsの問題をトラブルシューティングするにはどうすればよいですか?
Emacsが期待どおりに動作しない状況で、問題をトラブルシューティングするにはどうすればよいですか?自分で問題を見つけて修正するには、どのような手順を踏むことができますか? または、失敗した場合、ここ(またはメーリングリストや他のフォーラム)の人々が問題を解決するために役立つ情報を収集するにはどうすればよいですか? 私のEmacsには、多くのパッケージ、インターネット全体からコピー&ペースト(または削除&ヤンク)されたスニペットのコレクション、および私自身のカスタムelispが含まれています。これらすべての合併症を理解する方法はありますか?

1
評価を中断し、emacs-lispデバッガーで現在のスタックを観察しますか?
メジャーモードフックなどのemacs-lisp関数の実行に予想よりも長い時間がかかっている場合、それを中断して現在のスタックを確認したいことがあります。理想的には、デバッガーで変数値などを見ることもできるようにしたいです。私は意図的にemacs-lispモードで実行しているコードについてではなく、emacsの通常の操作で実行されるコードについて話している。 emacsでemacs-lispコードの実行を直接中断するにはどうすればよいですか?どの関数をデバッグする必要があるかは事前にはわかりません。 たとえば、を入力するとC-g、実行が中断されますが、どの機能が中断されたかについても何もわかりません。
17 elisp  debugging 

1
emacsクラッシュをデバッグするにはどうすればよいですか?
パッケージ1の関数を使用するとemacsがクラッシュする理由をデバッグしています。このデバッグプロセスの目的は、を使用して送信する有用なデータを取得することですM-x report-emacs-bug。 emacsのクラッシュをデバッグする方法についてのヘルプを得るために、Emacs Manual-CrashingおよびEmacs Manual-After a Crashを既に見てきましたが、彼らは助けませんでした。 Aクラッシュ後のマニュアルは、を意味しemacs-buffer.gdbますが、私はそれを使用する方法が分かりません。Googleに助けを求めている間に、このemacs.SEの質問に出会い、-ggdb3フラグを使用してemacsを再コンパイルしました。 私は以前に使用gdbした経験がないため、emacs-buffer.gbdファイルを使用しようとして失敗したことはほとんどありませんでした。 ここに私が試したものがあります: gdb -x /path/to/emacs-buffer.gdb gdb -> file /path/to/emacs-buffer.gdb gdb -> source /path/to/emacs-buffer.gdb source /path/to/emacs-buffer.gdb ちなみに、-ggdb3フラグ付きでコンパイルされたemacsのロードには約10秒かかります。以前は5〜6秒でしたが、現在は約16〜17秒です。私の初期化でそれを計算するコードのために、正確な秒を知っています。この起動時間の増加は予想されますか? 脚注1:undo-tree特定の.orgファイルの取り消し履歴を復元しようとすると、emacsは一貫してクラッシュします(これを公開することはできません)。持ってい(setq undo-tree-auto-save-history t)ます。このクラッシュはemacs git masterでのみ発生し、emacs 24.5では発生しません。emacs 24.5では、undo-tree(元に戻す履歴ファイルが存在する場合でも)元に戻す履歴を読み込めないことを示すエラーがスローされますが、少なくともそのバージョンではemacsセッションはクラッシュしません。
16 debugging  gdb 

3
エラー時に行番号を表示
emacsが私には理解できないエラーを投げるとします。または、「変数としてのシンボルの値はvoid:モードです」というエラーが表示される場合もありますがmodes、コードにはシンボルが多数出現するため、コンテキストが必要です。Emacsを設定して、Lispコードの行番号を指定して、エラーの原因となっているコードを知ることができますか? 私がやって試してみました(setq stack-trace-on-error '(buffer-read-only))とスタックトレースを取得するための努力の犯したコードを実行しました。スタックトレースもありません。 またedebug-defun、関数を呼び出して、ステップスルーすることも試みました。エラーがスローされるのは、関数から抜け出すまでではありません。 (私は現在、elispの一般的なデバッグスキルを開発しているので、現在直面している特定のエラーの原因にはあまり興味がありません。行番号、sexp、またはスタックトレースを取得する方法についてアドバイスしてください。エラー。)

2
「edebug-defun」をキャンセルする方法は?
の効果を元に戻すにはどうすればよいedebug-defunですか?言い換えるとedebug、特定の関数が呼び出されたときにデバッグモードに入るようにするディレクティブを無効にするにはどうすればよいですか? また、私はこの質問に対する答えが文書のどこにあるかを本当に知りたいです。私はそれが必要だと思うよりもずっと長く探してきました...
12 debugging  edebug 

1
プログラムからエラーからバックトレースを取得する
エラーがEmacs Lispのコードに合図し、されている場合debug-on-errorでt、私はエラーが発生した場所、それが簡単に把握することができますバックトレースバッファを取得します。ただし、ネットワークからの応答を非同期で処理しているときに発生するエラーの場合、バックトレースバッファーをポップアップ表示するのは面倒なので、エラーをキャッチしcondition-caseてログに記録します。 だから、でエラーを処理しているときに、エラーcondition-caseのポイントでバックトレースにアクセスする方法はありますか?backtrace関数を呼び出すと、ハンドラー内のコードのバックトレースが取得されますが、これは私が探しているものではありません。 (condition-case e (do-something-that-might-fail) (error (message "%s" ;; This gets the wrong backtrace! (with-temp-buffer (let ((standard-output (current-buffer))) (backtrace) (buffer-string))))))

1
elispの警告の原因を見つける
コマンドを実行し、ミニバッファーで警告を受けました。 正確な警告はcomint-completion-at-point failed to return valid completion data、でコマンドをオートコンプリートした後shell-modeです。 警告のelispの原因を特定するにはどうすればよいですか?
11 debugging 

1
(バックトレース/スタックトレース)から関数が呼び出される場所を見つける方法は?
(transient-mark-modeで)リージョンが非アクティブ化されるという問題に遭遇しました。関数deactivate-markが呼び出され、それがどこから(なぜ)呼び出されたかを知りたい。 試しましM-x debug-on-entry RET deactivate-markたが止まりましたが、発信者を見つける方法がありませんでした。表示される全体のスタックトレースは次のとおりです。 Debugger entered--entering a function: * deactivate-mark() 私は試しましたM-x edebug-eval-defunが、Edebugは発信者も表示しません。 なぜ(どこから)deactivate-mark呼び出されているのかを知る方法は?私はバックトレースまたはスタックトレース機能を探しています。 編集: advice-addトリック: (defun message-show-backtrace () (message "%s" (backtrace-frame 10))) (advice-add deactivate-mark :before #'message-show-backtrace) で生成さnilれ*Messages*ます。 編集:詳細deactivate-mark:http : //emacshorrors.com/posts/deactivate-mark.html

1
センチネルおよびフォントロック中のエラーをデバッグする方法
プロセスセンチネル内またはフォントロック中にエラーが発生すると、debug-on-error以前は有効にされていたとしても、Emacsはバックトレースを表示しません。 これらのエラーがキャッチされる理由を理解しています。バックトレースを表示しようとすると、同じエラーが再度トリガーされる可能性があります。ただし、実際にそのエラーをデバッグする場合、あまり役に立ちません。私はEmacsがこれから作業しなければならないよりも応答しなくなる危険を冒したいのです。 error in process sentinel: Wrong type argument: stringp, nil 結局のところ、最初のインスタンスがクレイジーになった場合は、2番目のインスタンスを開始することができます。センチネルで理論的にこのようなエラーが発生する可能性のある場所がたくさんある場合は、もう少しコンテキストが役立ちます。 それでdebug-on-error、効果がない場合でもEmacsにバックトレースを表示させるにはどうすればよいですか?
10 debugging 


1
デバッグシンボルを使用してemacsをコンパイルする方法
gdbでemacsソースコードを確認するのに問題があります。デバッグシンボルがないと思います。 https://stackoverflow.com/a/4298982/2752242からの提案に従って、私は試しました: ./configure CFLAGS="-ggdb3 -O0" CXXFLAGS="-ggdb3 -O0" LDFLAGS="-ggdb3" --with-gif=no --prefix=$HOME/local/apps/emacs-24.4/ しかし、それはうまくいきませんでした。 デバッグシンボルを使用してコンパイルする手順はありますか?ありがとう!
9 debugging 

2
クラッシュしたEmacsのより良いデバッグ?
Emacs(24.3.93.1)は、Finderから起動すると問題なく動作しますが、ターミナルバージョンを起動すると、次のようになります。 /Applications/Emacs.app/Contents/MacOS/Emacs -nw Emacsは次のようにクラッシュします: Fatal error 11: Segmentation fault[1] 51512 abort /Applications/Emacs.app/Contents/MacOS/Emacs -nw。 問題はinit.elの1行によって引き起こされているようです。 (set-face-attribute 'default nil :font "Menlo-16") その行がコメント化されている場合、Emacsのターミナルバージョンも正常に起動します。 クラッシュの原因を特定するのに数時間かかりました(init.elが半分ずつ減少しました)。 Emacsは、ターミナルアプリで指定されたフォントとフォントサイズを継承します(基本的に、この行はCLIでは意味がありません)。 一般的に言えば、クラッシュするEmacsをデバッグするより良い方法はありますか?おそらく、より説明的なメッセージを出力するようなある種のcliデバッガーを使用していますか? その行がcliを介してEmacsをクラッシュさせるのに、Finderから起動したのではないのはなぜですか?

2
組み込み関数と変数のソースコードに移動する
一日中、私は常に使用していますC-h fかC-h v(describe-functionとdescribe-variable関数や変数のドキュメントを検索します)。多くの場合、必要な情報がすべて得られない場合は、次の最後にあるファイルリンクをクリックします。 some-random-command is an interactive compiled Lisp function in `some-mode.el'. ソースコードに移動します。これはインストール済みパッケージでは機能しますが、組み込みパッケージでは機能しないようです。たとえば、コマンドのヘルプページの上部に表示されるのは、次のdescribe-functionとおりです。 describe-function is an interactive compiled Lisp function. ソースコードへのリンクなし。組み込みパッケージのソースコードにすばやく移動する方法はありますか? たとえば、ソースコードを見つけて、/usr/share/emacs/24.5/lispそのディレクトリにすばやくアクセスする方法はいくつも考えられることは承知していますが、ソースコード。ありがとうございました!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.