GDBコマンドの学習は私のバケットリストにありますが、それまでの間、
Windbgコマンドを受け入れ、同様の機能を備えていますか?たとえば、複数の編集可能なメモリウィンドウを表示したり、ステップ中に領域の周囲を自動的に逆アセンブルしたり、逆アセンブルフレーバーを設定したり、編集可能な値を持つレジスタを備えたウィンドウを作成したりできますか?
コメント
- @AshRjああ、あなたが今何を意味しているのかわかります。私の間違い、お詫びします。
- Voltron はまったく新しいものですが、有望なようです(まだテストしていません)。
- SOの場合: stackoverflow.com/questions/79023/ …
回答
gdbgui という独自のgdbフロントエンドを開始しました。ブラウザでフル機能のフロントエンドにアクセスできるサーバー(Python)。
インストール
pip install gdbgui --upgrade
すべてのプラットフォーム(Linux、macOS、Windows)およびJavaScriptを使用するブラウザで動作します。
実行
端末に入力するだけで
gdbgui
rブラウザは新しいタブを開きます。
機能
- ブレークポイントの設定/削除
- オプションのインラインマシンコードを使用してソースコードを表示
- スタック内の現在のフレームを選択
- ソースコードまたはマシンコードをステップスルー
- 変数の作成/探索
- スレッドの表示/選択
- メモリの探索
- レジスタの表示
- 送信できるように完全なgdbターミナル機能従来のgdbコマンド、およびgdb /下位プログラムの出力の表示
- リバースデバッグ用のMozillaのRRと互換性のある素晴らしいChromeデバッガーに触発されたレイアウト
コメント
- これは本当に良い仕事です。この設計は、平均的なユースケースの中核になります。それはいいですね。また、リモートデバッグもサポートしています(または、
target remote host:port
gdbコマンドの使用もサポートしています。うまくいきました。メニューにリモートホストに接続する機能を追加すると、追加できます。 -オン。’レジスタのサイズを縮小することは可能ですか?すべての情報が利用可能ですが、(少なくともARMでは)可能です’一度にすべてのレジスタが表示されないため、スクロールする必要があります。 - ここにあるコメントは、個々の
gdbgui
サポート用ではありません。新しいものを開いてくださいsxで質問するか、gdbguiサポートチャネル/バグトラッカーを使用してください。
回答
一部の人はそうしませんが “インターフェイスに注意してください。GDBには独自の組み込みGUI(TUIと呼ばれます)もあることを言及する価値があります。
コマンドを使用してGDBをGUIモードで起動できます:gdb -tui
TUIコマンドのクイックリファレンスは次の場所にあります: http://beej.us/guide/bggdb/#qref
回答
私は一般的にEmacsGUDをGDBフロントエンドとして使用しました。
使用するのはそれほど難しくなく、視覚的にブレークポイントを設定できます(または、必要に応じてGDBウィンドウを使用します。)
トップレベルのGDBメニューからアクセスできる複数の異なるビューがあります:
また、値にマウスを合わせて値を検査できるなどの便利な機能もあります。
これを使用するには、最初に次の場所に移動する必要があります。 C-x C-f
、次にM-x gdb
を含むバイナリのフォルダ(つまり、「Alt + X
」 、次に「gdb
」と入力します)。これを行った後、gdbコマンドラインを入力するか、[Enter]
を押してデフォルトを受け入れることができます。そこから、デバッグしているプログラムに渡したいパラメータを指定して、gdbウィンドウに「start」と入力するだけです。
その後は、ほとんど黄金色になりますが、ビューは1つだけです。画面上部の[GUD]の下にあるメニューを使用すると、デバッグしようとしているものに関連する他のビューを開くことができます。(フレームは個別のウィンドウであり、「ウィンドウ」はフレーム内ウィンドウです)
通常、デフォルトでは、プログラムの開始時にブレークポイントが設定され、上部のボタンを使用してコードをナビゲートできます。ウィンドウ、またはコードがない場合は、ビューをカスタマイズして、表示しているバイナリの逆アセンブリをステップ実行できます。
ウィンドウの上部にあるボタンは「{}」で囲まれています。 「」はコードレベルのステッピング用で、アイコンに「<>」が付いているボタンは命令レベルのデバッグ用です。したがって、通常のコードデバッグを行っている場合は左側に焦点を当て、真の核心に迫っている場合は右側に焦点を当てることをお勧めします。
また、迷子になった場合は、このアイコン:
これはあなたの質問に答えることができる本全体。 Emacsに存在しないのは、Debian(Ubuntuで問題ありません)を使用していて、リポジトリからEmacsをインストールした場合のみです。この場合、「emacs<vesrsion>-common-non-dfsg
」をインストールする必要があります。マニュアルを入手するため。(「<version>
」は、EmacsのM-x version
によって返される非10進数字です)
コメント
- これはSpacemacsであり、GNU Emacsではありませんか?
- いいえ。これは単純な’ ol GNU Emacs、私はちょうどこのように見えるようにスタイルを設定しました。上記のことは私の構成に固有のものではありません(実際、SpacemacsもEmacs構成のセットですが、GDBの使用法が変わるかどうかはわかりません)
- ‘はEmacsの在庫がありません。実行しているOSとパッケージは何ですか?
- PowerLineパッケージがインストールされているようです。 emacswiki.org/emacs/PowerLine
- @mrbeanこれはLinuxMintで、ええ、私のEmacsテーマだと思います2013年はbase16でした-明日はPowerLineで(素晴らしい認識です!)
回答
私の意見は少しです偏りがありますが、アセンブラーのデバッグには、IDAが最適なGDB「フロントエンド」です(リモートGDBターゲットとの通信をサポートします)。ただし、ソースコードのデバッグには、KDBGをお勧めします。
コメント
- 実際には、IDAを使用することをお勧めします’ s
linux_server
リモートGDBを介して、’より高性能で高速になります(テキストベースではなくバイナリプロトコルを使用するため) )。 - 推奨事項を正当化してください。答えは、OPだけでなく、将来これに遭遇する可能性のある他のすべての人々のために書かれています。
- 基本的には、IDA(プラグイン、IDAPythonスクリプト、既知のGUIなど)のすべての機能を備えているためです。 ..)そしてGDBのフロントエンドであるだけではありません。
回答
深刻な反対票を投じるリスクがある場合でも、私は「昔ながらのgdb
プロンプトを支持し、GUIフロントエンドに対して推奨します。 Art of Debugging 数年前。GDBとDDD、およびEclipseをGDBのフロントエンドとして説明しています。
確かに、ほとんどの場合、VimをIDEとして使用しています。ターミナルとtmux
(以前のscreen
とbyobu
)。したがって、でペインを切り替えています。コードとデバッガーをすばやく切り替えるためのターミナルマルチプレクサー。GDBプロンプト(TUIを数週間試した後)には、私がこれまでに望んでいたことはすべて編集しました。同じプロセスに複数回アタッチできることを覚えておく必要があります(これにより、メモリを説明する方法で確認できます)。
すべてのフロントエンドが遅れているようです。少し-当然のことながら-そしてGDBプロンプトとその優れた点と奇妙な点を理解する方が理にかなっています。ベアメタルセットアップでは、それが唯一のものである可能性があることに注意してください。したがって、独自の標準で「まともな」GUIを見つけたとしても、それを学ぶことは理にかなっています。
新しいバージョンのGDBはPythonスクリプトもサポートし、デバッグするための非常に強力なツールセットを提供します。コマンドラインからでも。
GUIフロントエンドの使用を絶対に主張する場合は、さまざまなデバッガーに単一のフロントエンドを提供するという単純な理由から、IDAProもお勧めします。そのショートカットを一度だけ学習(またはカスタマイズ)します。短所:特定のマシンにライセンスがない場合、またはGDBサーバーなどにトンネリングする方法がない場合の価格と柔軟性…
GDBのフロントエンドを認識していませんWinDbgコマンドを受け入れます。そして、もう一度強調することができます。とにかく、バニラGDBの学習に費やした時間の成果を享受できます。努力をためらわないでください。WinDbgには、Windowsの動作方法、Windowsカーネルの動作方法などに固有の機能がたくさんあります。GDBははるかに一般的です。
回答
DDD を提案したい。
ソースコードをお持ちの場合は、 QTCreator をご覧ください。デバッガーは、Visual Studioに精通している場合は、VisualStudioに似ています。
コメント
- I ‘
DDD
を使用しましたが、’ファンではありませんでした。 ‘ QtCreatorをチェックしますが、ありがとうございます! - DDDはデータ構造を表示するのに最適で、ボード(一種のライトテーブル)にレイアウトできます。 )。したがって、data-display-debugger。
- DDDは一見奇妙で時代遅れに見えますが、’は非常に強力です。
回答
GUIではありませんが、慣れれば良い代替品です(個人的には、ほとんどの場合は高速だと思います)。 )-> https://github.com/gdbinit/Gdbinit 。
* nixの反転を開始したときのことを思い出し、初めてgdbに直面しました。それを嫌い、+ mammonオリジナルのgdbinitが私の一日を救いました。最近、私はほとんどのGUIデバッガーよりもgdbを好みます。
試してみてください:-)
完全な開示:私はツールの作成者です。
コメント
- Gdbinitが’維持しているソフトウェアであることを開示する必要があります…
- そう? ‘は無料で、誰でも利用できます。ここで何かを売ろうとしているわけではありません。ねえ…!
- @ fg-それでも、経験に基づくのではなく、そのツールを書いたという事実だけに基づいた広告かもしれません。
- だからあなたは’問題を解決する便利なツールを宣伝し、他の人がそれを行うのを待たなければなりませんか?それは’問題解決者”コミュニティ”にとって本当に奇妙な思考モードです。
- @ fG-よくある質問をお読みください: reverseengineering.stackexchange.com/faq#promotion
回答
DDDはあまり好きではないので、GUIでは90インチです。
gdbのKDEフロントエンドであるKDBGをお勧めします。さらに、gdbのcurses拡張機能であるCgdbを確認することをお勧めします。
最近、 Nemiver に出くわしました。本当に有望に見えます。
コメント
- KDBGは、ソースなしでの逆アセンブルとデバッグにも適していますか?彼らのスクリーンショットはソースコードのみを示していました。
- わかりません’わかりません、これまで試したことはありません…
- ” it ‘なので、90 ‘ s ‘ ■GUI ” … 80に似ています’ s
- GUIの外観だけが欠点ですか?
回答
cgdb もVimを使用する場合に最適なオプションです。
cgdbは、regex検索やその他の多くのコマンドをvimと共有します。 cgdbホームページから:
キーボードインターフェースはvimをモデルにしているため、vimユーザーはcgdbを使用してくつろげるはずです。
回答
コーディングなどの際、通常はCLIモードでVim + gdbを使用します。
上記のオプション以外に、Code :: Blocksがあります。バックエンドとしてGDBとCDBを使用します。 GDBの場合、分解にはAT & T、Intel、または custom を選択できます。混合モードと純粋な命令リストをサポートします。さらに、カーソルなどの下で変数を(コードで)評価するように設定できます。
メモリダンプウィンドウは1つだけですが、 raw GDBコマンドをに追加で入力できます。 >ウィンドウに出力される下部のコマンドライン –たとえばメモリダンプ。
CPUレジスタ用の個別のウィンドウがあり、直接編集することはできませんが、前述のコマンドラインやその他の値で値を設定できます。
set $eax = 123 set var xyz = "q"
下の図は、KVMでのソースデバッグの動作を示しています(リンクを開くと、より大きな形式で表示されます)。
Ubuntu 12で実行したときに発生した問題の1つは、GUIのバグなどです。UB12のバージョンは10.10です。しかし、現在のリリース、12.11のコンパイルとインストールは簡単でした。
例:カスタムインストールパスインストールの場合(ディストリビューションに最新バージョンがなく、両方が必要な場合):
- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log
回答
このDrDobbsの記事では、LinuxOSでデバッグするためのGUIについて詳しく説明しています。 Linux環境に基づくGDBデバッグと呼ばれるQt-Creatorをお勧めします。とにかく、この記事ではC ++コードのデバッグについてのみ説明していますが、GDBのデバッグ機能を紹介するにはそれで十分です。
回答
お勧めします UltraGDB は、Eclipseテクノロジに基づくGDBGUIフロントエンドおよび軽量IDEです。
回答
Affnic Debugger GUI があります。無料ではありませんが、ライトバージョンが存在します。 Windows、Linux & MacOSで利用できます。
公式ウェブサイトから
Affinic Debugger GUI.aka。ADGは、さまざまなデバッガーのグラフィカルユーザーインターフェイスとして設計されています。このビルドは、GNUデバッガーであるGDBを特に対象としています。グラフィカルウィンドウを使用すると、ADGは複数のデバッガーを表示することでデバッガーの能力を最大限に引き出すことができます。 1つのビュー内の情報の種類と簡単にクリックしてデバッガーを操作します。ADGは、ユーザーがデバッガーコマンドを直接入力するための統合コマンドターミナルも提供します。ADGはLinux / Windows / Mac OSXで使用できます。
回答
VisualStudio.Code( VS.Code )はLinux上で実行され、gdbを使用できる「ネイティブデバッガー」拡張機能を備えています。非常に応答性の高いUIを備えています。リソースが非常に少ないです。このエクスペリエンスは、C ++開発者向けのWindows上のVisualStudioにいくらか似ています(アセンブリビューはありません)。主なデバッグショートカットは、そのまま使用すると同じです(F5、Shift-F5、F10、F11)。
インストールは2回クリックで(1つはVS.Codeをインストールし、もう1つは拡張機能をインストールします)、Windows Visual Studioから来て、すぐに生産性を求めている人に最適です。
回答
Voltron があります。これは、LLDB、GDB、VDBをサポートする拡張可能なPythonデバッガーUIです。 、およびWinDbg / CDB(PyKD経由)であり、macOS、Linux、およびWindowsで実行されます。最初の3つでは、x86、x86_64、およびlldbのarm64サポートを備えたarmをサポートし、gdbのpowerpcサポートも追加します。
作成者は、Voltronを統合するためのBinaryNinjaプラグインも作成しました- https://github.com/snare/binjatron -同期されたビューを許可します。
回答
以下はソースコードのデバッグにのみ適用されることに注意してください。
CLion
は、gdb
を使用するIDE
です。コマンドを入力することはできますが、ステップ、現在アクティブな変数の表示、breakpoints
の設定など、多くの機能がGUIにシームレスに実装されています。続きを読む here
。
回答
GDBFrontend を使用できます。これは非常にハッキング可能なGDBフロントエンドです。
完全な開示:私は開発者です。