コード付きのgdb分割ビュー


111

私はgdbでプログラムをデバッグしていましたが、どういうわけか、これまで見たことも聞いたこともない新機能、コマンドを与えることに加えてコードを表示および参照できる分割ビューを見つけました。

申し訳ありませんが、ttyにはスクリーンショットがありません。

これは何ですか?私は何をしましたか、より具体的には、この分割画面モードを再び取得するにはどうすればよいですか?このモードの名前はありますか、または使用方法についてどこかで読むことができますか?


2
クイックリファレンス:このモードは、Cx Ca、Cx a、またはCx Aのいずれかを使用して終了できます。` この質問を参照してください。
Richard

回答:


95

これはTUI(冗談ではありません)と呼ばれます。たとえばgdbtuiorで始めgdb -tuiます...


11
通常のlayout next起動後に使用することもできgdbます
khaverim 2018年

87

ctrl+ xctrl+を押すことで動的にトリガーできaます。


@ user146043のおかげで、ctrl-aが画面コマンドを開始する方法であると同時に画面を実行している場合、これが唯一の方法のようです!
olik79

あなたもそのコンボで閉じることができるようです!
Nick Desaulniers

40

これには2つのバリアントがあります。

  1. コードのみを表示するには

CTRL X一緒に押してから 1

  1. ソースとアセンブリの両方を表示するには

'CTRL' 'X'を押してから '2'を押す

http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html

コードとアセンブリを含むビューのスクリーンショット。 ここに画像の説明を入力してください

また、この素晴らしいGithubプロジェクトもチェックしてください。


githubプロジェクトのリンクを共有してくれてありがとう。それはあまりにも素晴らしいです:)
Vivek Agrawal


15

GDBダッシュボード

https://github.com/cyrus-and/gdb-dashboard

GDBダッシュボードは公式のGDB Python APIを使用し、ネイティブコマンドのnextようにdisplay GDBが停止した後などに必要な情報を出力します。

対TUI:

  • シェルをより魔法のcurses状態にする代わりに、標準出力に出力するだけなので、より堅牢です。例:

  • Pythonから高度に構成可能:デバッグする内容に応じて、出力する内容と各セクションの大きさを選択できます。

    最も有用なビューは既に実装されています:ソース、アセンブリ、レジスター、スタック、メモリー、スレッド、式...しかし、GDB Python APIで公開されている情報で簡単に拡張できます。

    TUIでは、ソース、アセンブリ、およびレジスターの2つのみを表示できます。もちろん、変更したくない場合は、Cソースコードです;-)

ここに画像の説明を入力してください

GDBはそのままの状態で出荷され、デフォルトで有効になっているはずです。そうすれば、より多くのユーザーを引き付けることができます。

ああ、そしてメインの開発者であるAndrea Cardaciは、非常に反応がよくて素晴らしいです。大きな称賛。

参照:対話型デバッグ中にgdb出力を強調表示して色を付ける方法


2
それがどれほど素晴らしいかを説明するのに十分な言葉がありません。おかげで:)
unresolved_external

11

タイプlayoutGDBにおけるコマンドとスプリット・ウィンドウなどが表示されます。


5

GDBが標準モードの場合、winは自動的にTUIモードに切り替わります。
TUIモードのその他のコマンド:

  • info win
    表示されているすべてのウィンドウのサイズを一覧表示して指定します。
  • focus next | prev | src | asm | regs | split
    名前付きウィンドウにフォーカスを設定します。このコマンドを使用すると、アクティブなウィンドウを変更して、スクロールキーを別のウィンドウに影響させることができます。

詳細はこちらのフォームをご覧ください。


2

cgdbと呼ばれるGDB用のインターフェースツールもあります。いくつかの色の強調表示でも。コードビューに切り替えるには「ESC」、gdbに切り替えるには「i」

cgdb


1

tuiモードは明らかにemacsに触発されました-^ Xoを押したときに偶然にそれを発見しました.emacsの分割ウィンドウ間で切り替わります-私がしなければならないことが別のプログラムに切り替わっているときに、ぼんやりとぶつかることがあります。とにかく、それはまだ言及されていない別の機能につながり、カーソルをコードウィンドウ(スクロールできる場所)からコマンドラインに移動したり、その逆を^ Xoで行ったりできます。


明らかに、GNUのプログラムのほとんどは、主に一貫性の理由により、キーバインディングのようなemacsを持っています。私はbashにviモードがあることを知っていますが、それはemacsモードほど十分ではありません。
クラウス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.