web-dev-qa-db-ja.com

LinuxでC ++プログラムをデバッグする

私は次のような単純なC++プログラムを作成しました。

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello.";
    return 0;
}

今、私はそれをデバッグしたいと思います。それで、私の制御がすべての行に行くように、それに対するコマンドは何でしょうか?

20
bindu

これには gdb を使用できます。

$ gdb hello

これにより、gdbが開始され、次に何をするかを尋ねられます。 nextコマンドは、ソースの1行を実行し、次の行で停止します。

基本的な GDBチュートリアル が役立つかもしれません。

31
Greg Hewgill

-gオプションを使用してソースコードをコンパイルすることを忘れないでください。このように:g++ -g helloWorld.ccこれにより、a.out実行可能ファイルが作成されます。 gdb ./a.outコマンドを使用して、a.outexeをデバッグできます。あなたがそれを使うかもしれないもう一つのツールは ddd 基本的にgdbのためのGUIです。

幸運を

17
dario minonne

私はいつもemacsがgdbにかなりユーザーフレンドリーなフロントエンドを提供すると思っていました...

例えば。

  • %g ++ hello.cc -g -o hello
  • emacs hello.cc
  • [Emacs] Escape-x gdb
  • Emacsは「Rungdb(like this like):gdb」と表示します。
  • バイナリ名( "hello")を追加します。 (例:「gdbを実行する(このように):gdb hello」)
  • Hello.ccバッファーに移動します。
  • Emacsコマンド「gud-break」を使用して、hello.ccバッファーからgdbにブレークポイントを設定します。 (通常は「C-xスペース」にバインドされます。)
  • * gud-hello *バッファに移動します。
  • (gdb)プロンプトで「run」と入力します。
  • [[〜#〜] n [〜#〜]]次または[[〜#〜] s [〜#〜]]ステップを使用します。または[[〜#〜] c [〜#〜]]続行します。 [[〜#〜] bt [〜#〜]]バックトレースも役立ちます。
  • Hello.ccバッファの左端の列にある小さな三角形がどうなるかに注意してください。

(始めるにはそれで十分です。emacsはemacsであり、常により多くの機能があります...)

6
Mr.Ree

ユーザーフレンドリーなデバッガーが必要な場合は、基本的にKDEのgdbフロントエンドであるKdbgを使用できます。おそらくdddほど強力ではありませんが、最初は簡単です。

3
Marc

スウェーデンで行ったC++プログラミングコースでは、GNUデバッガーについての研究室の一部がありました。後で使用したことはありませんが、 ここ 説明する論文があります。私が覚えている限り、基本的な使用法は第2章にあります。

3
tunnuz