Linux用のC ++ gdb GUIはありますか?[閉まっている]


210

簡単に言うと、誰かが最新バージョンのVisual C ++で得られる機能セットと同等またはそれに近いgdbのGUIを知っていますか?

詳細:Windowsでのプログラミングに多くの時間を費やしてきた人として、LinuxでC ++をコーディングしなければならないときにいつも見つけた大きな障害の1つは、コマンドラインgdbを使用して何かをデバッグすると、何倍も時間がかかることです。 Visual Studio、そしてそれは練習で良くなっていないようです。グラフィカルに表現する方が簡単または高速なものもあります。

具体的には、次のようなGUIを探しています。

  • コードのステップオーバーやステップインなどのすべての基本を処理し、変数とブレークポイントを監視します
  • 複雑でネストされたC ++データ型の内容を理解して表示できる
  • パラメータタイプなどの関連情報を表示しながら、テンプレートコードとデータ構造に混乱することなく、できればインテリジェントにステップスルーできます。
  • スレッド化されたアプリケーションを処理し、異なるスレッド間を切り替えて、ステップスルーまたは状態を表示できます。
  • gdbでプログラムを起動することに加えて、すでに開始されているプロセスへのアタッチまたはコアダンプの読み取りを処理できます。

そのようなプログラムが存在しない場合、少なくともいくつかの箇条書きの点を満たしているプログラムでの人々の経験について聞きたいです。誰か推奨事項はありますか?

編集:
可能性をリストアップすることは素晴らしいです、そして私が得ることができるものを取り上げますが、あなたの応答に含めることができればそれはさらに役立ちます:
(a)あなたがこのGUIを実際に使用したかどうか、そしてそうなら、それについてどのような正/負のフィードバックがありますか。
(b)ご存知の場合、上記の機能のうち、サポートされている機能とサポートされていない機能

リストは簡単に手に入ります。このようなサイトは、人々がアプリケーションを使って個人的な経験をすることができるので、すばらしいものです。


21
+1「このようなサイトは、人々の個人的な経験についてのアイデアを得ることができるので素晴らしいです。」最近では、IMHOが要点を完全に逃したリストダンプを実行する人が多すぎます。
kizzx2



こちらのgdbフロントエンドのリストを参照してください:sourceware.org/gdb/wiki/GDB%20Front%20Ends、そしてリストの最初の1つを試してみてください。非常に有望でモダンに見え、ブラウザーベースであるためクロスプラットフォームです:gdbgui.com
ガブリエルステープルズ

回答:


55

Visual Studioデバッガーの本来の能力と競合する可能性のあるGDBをオーバーレイするものは何も見つかりません。これは非常に強力で、IDE内に統合されすぎています。

Linuxの代替案として、フリーソフトウェアがあなたのものならDDDを試してください。


2
WinDBGは、Visual Studioが提供するものよりもはるかに優れています。Visual Studioデバッガーは、WinDBGと同じアーキテクチャの上にあります。そうは言っても、GDBをWindbgと比較する場合、GDBに質問することは何もありません。DDDよりも優れたグラフィカルデバッガはすばらしいでしょう。Eclipse CDTは良い代替手段です。KDE UIがあったと思います
bigmonachus

114
ああ見て。まったくバックアップせずに主張する答え。また、質問答えない答えが受け入れられたのもおかしい。
代替

3
ここに来て本当の答えを探している人は、dddがゴミであることを知ってください。私が見つけたLinuxに最適なデバッガーGUIはIDAです。これはフリーソフトウェアではありません。
bkconrad 2013

1
できる限り質問に答えるか、何も言わないでください。両方を使用したため、Visual Studioの機能はさらに充実していますが、DDDで十分です。悲しいことに、DDDはその年齢を示しています。
アランデスメット2014

6
この投稿は更新または改善する必要があります。Qt Creatorは、Visual Studioと同等の素晴らしい機能を備えています。
vharron 2014

85

Eclipse CDTは、Visual Studioの使用に匹敵するエクスペリエンスを提供します。私はEclipse CDTを日常的に使用して、コードの記述とローカルおよびリモートプロセスのデバッグを行っています。

EclipseベースのIDEの使用に慣れていない場合は、GUIに慣れるのに少し時間がかかります。ただし、Eclipseに固有のGUIの考え方(パースペクティブなど)を理解すると、ツールを使用するのは素晴らしい経験になります。

CDTツールは、コードベース内のメソッドへの参照をすばやく見つけることができる適切なC / C ++インデクサーを提供します。また、優れたマクロ拡張ツールと限定的なリファクタリングサポートも提供します。

デバッグのサポートに関して、CDTは、コアダンプの読み取りを除いて、リスト内のすべてを実行できます(これはサポートされている可能性がありますが、この機能を使用したことはありません)。また、テンプレートを使用したコードのデバッグの私の経験は限られているため、この点に関してCDTがどのような経験を提供するのかわかりません。

Eclipse CDTを使用したデバッグの詳細については、以下のガイドを確認してください。


10
コアダンプの読み取りがサポートされています。(これは、事後分析デバッガと呼ばれます。)
Josh Kelley

私はVisual StudioよりもEclipse CDTデバッグの経験が豊富です。ただし、MSVCにはあまりチャンスを与えていません。
notlesh 2013年

3
QtCreatorは、比較できるので、Eclipseと一緒に言及する必要があると思います。
nonsensickle 2017

78

gdb -tuiは、GUI風のものが必要な場合でも問題なく機能しますが、文字ベースです。


45
'-'コマンドを使用して、gdbでTUI(テキストユーザーインターフェイス)モードに入ることもできます。コマンドプロンプトに戻るには、Ctrl-X Ctrl-Aを押します。TUIモードでは、上、下、左、右がソースを移動します。コマンドライン履歴内を移動するには、Ctrl-P、Ctrl-N、Ctrl-F、およびCtrl-Bを使用します。
Ben Combee、2008年

これはまさに私が探していたものです。動き回ると更新されるいくつかの便利なビューを備えたgdbコマンドラインの威力。
Kevin Cox

7
steriodsの.gdbinitは、色で非常に印象的な文字ベースのGUIを提供します:github.com/cyrus-and/gdb-dashboard
cs01

私はgdb-dashboardをかなり気に入っていますが、voltronについても言及する必要があります。
nonsensickle 2017

3
@バリーありがとう。知りたい人のために、ここにリンクがあります:github.com/cs01/gdbgui。これは、データ構造DDD、簡単になしXでリモートマシンのデバッグが必要なフォワーディングへのクライアント/サーバアーキテクチャに似表示、および複素変数を探索する能力を持っている、など。
CS01

47

Nemiver C / C ++ Debuggerをチェックしてください。Ubuntuへのインストールは簡単です(開発者ツール/デバッグ)。

更新:新しいリンク。


絶対に 素晴らしい、apt: 'apt-get install nemiver'でもサポートされています。「パッケージgconf-2.0が見つかりません」が原因で、リポジトリからの構築が失敗しただけです。
J Evans

インターフェイスは非常に明確で読みやすいですが、インターフェイス機能v0.9.6の使用中にクラッシュすることがあります。また、デバッグ済みのアプリケーションパラメータも受け入れます。
アクエリアスパワー

Fedora 30でも利用できます(少なくとも)。私はたまたまこの質問とニミバーに出会いました。
user3236841

31

Qt Creatorは良いもののようです。同僚から、デバッグ用に設定する方法の1つが示されました。

  • 新しいプロジェクト「Makefileベースのプロジェクトのインポート」を作成します。
  • ルートプロジェクトフォルダーをポイントします(その下のソースにインデックスが付けられ、非常に高速です)。
  • プロジェクト設定に移動して実行構成を追加し、デバッグする実行可能ファイルとその引数を指定します。
  • Qt Creatorは、プロジェクトをデバッグする前にビルドするよう主張しているようです。これが不要な場合、またはmakeを使用しない場合は、プロジェクト->ビルド(左側のパネル)に移動し、次に「ビルドステップ」の右側のパネルで、デフォルトのステップを含むすべてのステップを削除します。プロジェクトを作成しました。

これは、既にコンパイルしたアプリをデバッグするのに少し手間がかかるように思えるかもしれませんが、それだけの価値はあります。デバッガーは、Visual Studioと同様の方法でスレッド、スタック、ローカル変数を表示し、同じキーボードショートカットの多くを使用します。少なくともstd :: stringとstd :: mapはテンプレートをうまく処理するようです。既存のプロセスとコアダンプへのアタッチはサポートされているようですが、まだテストしていません。

私はそれを1時間足らずで使ったことを覚えておいてください、しかし私は今のところ感心しています。


29

Windows開発のアイデアは嫌いですが、VC ++デバッガーは私が見た中で最高のものです。VCに近いGUIフロントエンドが見つかりません。

GDBは、慣れれば最高です。十分な怒りでそれを使用し、あなたは非常に熟達するでしょう。私は、あなたがリストアップしたすべてのことを、これ以上の努力なしで実行するプログラムを思いつきます。私が熟練する前に、リモートサーバーへのSSHリンクで1か月ほど苦しみました。でも二度と戻らない。

DDDは本当に強力ですが、かなりバグが多かったです。GDBから、動作しないというメッセージを受け取ったときに、かなり頻繁にフリーズしてしまうことがわかりました。何が起こっているのかを確認したり、gdbと直接やり取りしたりできるgdbインターフェースウィンドウを備えているので、すばらしいです。私の環境のリモートXセッションではDDDを使用できません(Unix devを実行するときにシンクライアントに座っているため、実際の問題です)。

KDevelopは典型的なKDEスタイルに従い、すべてをユーザーに公開しました。KDevelopでKDevelop以外のプログラムをデバッグすることもできませんでした。

Gnatプログラミングスタジオ(GPS)は、実際にはGDBにとって非常に優れたフロントエンドです。Adaプロジェクトを管理するだけではないので、デバッガーが必要な場合は試してみる価値があります。

あなたはEclipseを使用することができますが、それはかなり重いですし、私が一緒に働いた経験豊富なUnixの人々(私も含まれます)の多くは、そのインターフェースをあまり気にしていません。また、Eclipseは多くのスペースを占有し、犬のように実行されるようです。


2
私のプロジェクトgdbgui(github.com/cs01/gdbgui)をプラグインしたかっただけです。これはクライアント/サーバーアーキテクチャであるため、Xセッションを必要とせずにリモートマシンのデバッグに適しています。また、GDBと直接対話するためのターミナルがあり、DDDと同様に、データ構造を表示するビジュアルがあります。
cs01

経験に基づく長所と短所との比較。この質問に必要なものだけです。ty
Heath Raftery


16

私はDDDをよく使用していますが、DDDの使用法を習得すれば、非常に強力です。Xを介してWAN経由で使用しないでください。不要な画面更新が大量に行われるようです。

また、GDBと交配しておらず、少額の現金を用意してもかまわない場合は、TotalViewを試してみます。それは少し急な学習曲線を持っています(間違いなくより直感的である可能性があります)が、これは私が任意のプラットフォームで今まで使った中で最高のC ++デバッガであり、カスタム方法でオブジェクトをイントロスペクトするように拡張できます(したがって、複雑な内部データメンバーなどではなく、オブジェクトの実際のリストとしてのSTLリストなど)


DDDをリモートXで動作させることができません。私のシンクライアントでXlibエラーが発生してクラッシュする:(
Adam Hawes

totalviewは実行可能な代替手段のように見えます。DDDがgdb cursesインターフェースよりも優れているとは思いません。
deft_code 2009

8

Eclipse CDTプロジェクトを調べてください。これは、C / C ++開発向けのEclipse用プラグインであり、かなり機能豊富なデバッグパースペクティブが含まれています(舞台裏ではGDBを使用しています)。さまざまなプラットフォームで使用できます。




6

KDbgを使用しました(KDEでのみ機能します)。


3
KDbgはKDEに限定されません
nobar 2016年

それは素晴らしいです。ずっとどこにいたのだろう。
edmz

5

私はgdbに対していくつかの異なるguiを試してみましたが、DDDの方が優れていることがわかりました。また、Linux用の他の非gdb製品についてコメントすることはできませんが、他のプラットフォームでは他の多くのデバッガーを使用しました。

gdbは、ウィッシュリストにあるほとんどのことを行います。DDDはそれらにより良い前線を置きます。たとえば、スレッドの切り替えが簡単になります。ブレークポイントの設定は、予想どおり簡単です。

また、やりたいことが不明瞭な場合は、cliウィンドウが表示されます。

私が使用した他のデバッガーの中で際立っているDDDの1つの機能は、データの「グラフ化」です。これにより、構造、オブジェクト、メモリをドラッグ可能なボックスとして表示および配置できます。ポインターをダブルクリックすると、逆参照されたデータが開き、親への視覚的なリンクが表示されます。


dddは引数付きのプログラムで動作しますか?引数を渡すことができませんでした...
user3236841

私の記憶が正しければ、DDDはGDBに直接コンソールウィンドウを提供します。GDBコンソールでは、「set args xyz abc」コマンドを使用してコマンドライン引数を設定できます。
Andrew Edgecombe

5

Linux上のQt Creator-on-Linuxは、今日のC ++向けのVisual Studio-on-Windowsと確かに同等です。デバッガー側のほうもいいと思います。


5

このリストにない、非常に効率的なIDEが1つあります(私は問題なく多くのC / C ++プロジェクトで使用しました):Netbeans


私は慣れてきているのでcgdbを非常に好みますが、NetbeansはVSからの非常に優れた足がかりでした。
zzxyz 2018

3

段階的に実行できるものは、g ++が生成するデバッグ情報によって大幅に制限されます。Emacsはgdbへのインターフェースを提供します。これにより、ツールバー/メニューを介して制御したり、データを別のウィンドウに表示したり、gdbコマンドを直接入力したりできます。EclipseのCDTは同様のツールを提供します。AnjutaとCode :: Blocksについて聞いたことがありますが、使用していません。


3

Visual Studioに精通している人として、私はいくつかのオープンソースIDEを置き換えて見てきました。KDevelopは、Visual C ++の人がただ座って使用を開始できるものに最も近いIMOです。プロジェクトをデバッグモードで実行すると、gdbが使用されますが、kdevelopはほとんどすべてを処理するため、gdbであることを知る必要はありません。変数を1ステップで実行するか、ウォッチを変数に割り当てます。

残念ながら、それはVisual Studio Debuggerほど優れていません。


3

WindowsとUNIXのどちらを使用しているかについては触れません。

UNIXシステムではKDevelopが良いですが、私はKDbgを使用しています。KDbgは使いやすく、KDevelopで開発されていないアプリでも動作するためです。

日食は両方のプラットフォームで優れています。

Windowsには、Eclipse CDTとMinGWがすべてパッケージ化され、最小限の労力でうまく構成されたWascana Desktop Developerと呼ばれる素晴らしいパッケージがあります。それは私がWindowsでGNUコードを開発するために見つけた最高のものです。

私はこれらすべてのデバッガーを使用しましたが、どれもMS Dev Studioほど優れていません。Eclipse / Wascanaがおそらく最も近いですが、DLLにステップインできないなどの制限があり、変数の調査には適していません。


3

あなたが今まで見てとっているDS-5デバッガか?

多くの便利な機能を含む有料版がありますが、無料でCommunity Editionを使用することもできます(これは特に組み込みシステムにとっても非常に便利です)。

実際のデバイスでEclipseを使用してAndroidアプリケーションをデバッグするときに、このツールを使用して前向きな経験をしました。





1

cygwin gdbでgdb -wを試しましたか?かなりうまく動くウィンドウズインターフェースを持っていると思われます。

私が見つけた唯一の問題は、現在のマシンでは、dddをインストールするまでその方法で実行されなかったことです。dddをインストールしたときにインストールしたtcltkが必要だと思います。




0

過去15か月間、私は洞察力を使用します(FC6に付属しています)。Tcl / Tkで書かれていますが、シンプルで便利です。DDDは同様の品質/ユーティリティですが、使用するのがやや困難です(さまざまなGUIの落とし穴と省略)。また、gdbをIDEのSlickEditと統合しようとしました。正常に動作しました(私は4時間程度遊んでみました)が、GUIコンテキストスイッチは好きではありませんでした。デバッグ中はIDEを変更しないでおくのが好きです。Windowsでは、IDEにはSlickEditを、デバッグにはVisual Studio Debuggerを使用します。したがって、3:Insight、DDD、およびSlickEditから、Insightは私の最初の選択です。私はそれを95%以上の時間で使用し、コマンドラインgdbとDDDが他の5%を占めています。機会があれば、いつかEclipseを評価します。私の仕事用PCには、Eclipseを適切に実行するのに十分なRAM(1GBのみ)がないようです。

就職の面接中の直接の手を含む、TotalViewに対する多くの賞賛も聞いています。私は2008年の終わりに会社の評価を取得しましたが、最終的にはgdbが私たちのニーズに十分対応できたので、続行しませんでした。そして、それは無料でユビキタスです。


0

www.zero-bugs.com/ Zeroデバッガーを使用します。gccからのC ++ 0xサポートが必要です


1
www.zero-bugs.com/ウェブサイトがダウンしています
vharron

0

実行中のプログラムをステップ実行するデバッガーを探していました。説明:接続します。プログラムはeclipseでビルドされましたが、おそらくマルチスレッドの障害のため、ソースファイルがありません。なんでも。

NetBeansにとても慣れました。

  • [デバッグ]メニューから->デバッガーをアタッチ...
  • プロセスがデバッグするものを選択したため
  • プロジェクトとして[新しいプロジェクト]

ウィンドウが消え、何も見えなくなります。プロセスから切り離します。リードスクエアの「ストップ」が役立ちます。

  • プロジェクトからソースをフォルダなどとしてインポートします。"... / MyProject / src
  • これでプロジェクトに表示され、ブレークポイントを設定できます。
  • 再びデバッガを接続する
  • デバッグするプロセスを選択しました。
  • プログラムが次のブレークポイントに到達した場合、デバッガーは停止するはずです。

[ウィンドウ]-> [デバッグ]->ウィンドウは快適ですか?

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