0

OK、「LinuxでのVisual Studioの同等物」またはこの質問のバリエーションを求める質問がたくさんあります。(ここここここ、...)

1 つの側面に焦点を当てて、さまざまなシステムでデバッグワークフローがどのように異なる可能性があるかを尋ねたいと思います。具体的には、Visual Studio (のような) システムで使用される完全に統合された IDE アプローチと、おそらくより「分離された」ツールチェーン指向のアプローチです。

この目的のために、「Visual Studio デバッグ ワークフロー」の簡単な説明と考えられるものを提示します。

  • 与えられた既存のプロジェクト
  • プロジェクトを開きます (ユーザーの観点からの 1 つのステップ)
  • デバッグしたいコードに移動します (おそらくプロジェクト ファイルを検索します。これは、 [ファイルから検索] ダイアログ ボックスを開くだけで簡単に実行できます)。
  • 行 (a) にブレークポイントを配置します。行にカーソルを置いて、F9
  • 行 (b) に「トレースポイント」を配置します。そこにブレークポイントを追加し、ブレークポイントのプロパティを変更して、デバッガーが停止しないようにしますが、代わりにローカル変数の値をトレースします。
  • 実行可能ファイルを自動的にコンパイルし、デバッガーで起動し、prgがF5(a) で停止するまで待機します。その間、トレース ウィンドウで (b) の出力を監視します。
  • デバッガーが最終的に (a) で停止すると、画面に次の情報が (1 回限りの事前構成されたウィンドウ)同時に並べて自動的に表示されます。
    • 現在のコール スタック
    • 最近変更されたローカル変数の値
    • ロードされたモジュール (DLL)
    • すべてのアクティブなブレークポイントとその位置のリスト
    • 最後に入力したウォッチ エクスプレッションを含むウォッチ ウィンドウ
    • 生のメモリの内容を調べるためのメモリ ウィンドウ
    • 現在のレジスタ値を表示する小さなウィンドウ

プラス/マイナスのいくつかの機能、これは Linux の Eclipse/CDT でも期待できるものです。VIM、Emacs、gdb/DDD などで開発する場合、このワークフローと提示された情報はどのように取得されますか?

この質問は、あるツールに 1 つの機能があるかどうかということではなく、開発/デバッグ作業が機能の組み合わせを使用しており、多数のオプションをすぐに利用できることと、ツールを使用していないときにこの情報にアクセスする方法を確認することに関するものです。完全に統合された IDE。

4

1 に答える 1

2

あなたの答えは、使用するソフトウェアだけでなく、使用する方法論でもあると思います。私は Emacs を使用しており、ほとんどのデバッグで TDD に依存しています。何かが失敗した場合、私は通常、(明らかに) 見逃していたギャップを埋めるテストを作成し、そのようにしてすべての期待をチェックします。そのため、デバッガーを使用するたびに大きくなります。

問題が発生した場合、いくつかの選択肢があります。場合によっては、最初に valgrind を使用します。メモリー関連の問題があるかどうかをすぐに教えてくれるので、デバッガーは必要ありません。そのままにしておくべきメモリを上書きまたは削除する行を直接指します。競合状態が疑われる場合、valgrind はそれが得意です。

デバッガーを使用するときは、GUD モードを使用して emacs で使用することがよくあります。スタック、ローカル変数、ソース コード、ブレークポイント、およびデバッガーにコマンドを実行できるウィンドウが表示されます。通常、いくつかのブレークポイントを設定し、メモリまたは評価を監視し、コードをステップ実行します。これは、IDE でデバッガーを使用するのとほとんど同じです。GDB デバッガーは強力な獣ですが、私の問題は、その力を発揮する必要があるほど大きくはありませんでした。

于 2010-11-11T12:50:37.290 に答える