131

gdbでプログラムをデバッグしていたところ、コマンドを実行するだけでなく、コードを表示および参照できる分割ビューという、これまでに見たことも聞いたこともない新機能を見つけました。

写真については申し訳ありませんが、ttysにはスクリーンショットがありません。

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

4

9 に答える 9

110

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


CiroSantilliによるこの回答も参照してください。私の知る限り、2012年には利用できませんでしたが、一見の価値があります。

于 2012-04-12T00:01:19.580 に答える
104

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

于 2013-02-15T14:21:13.227 に答える
46

それには2つのバリエーションがあります。

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

CTRL X一緒に 押してから1

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

「CTRL」「X」を同時に押してから「2」を押します

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

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

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

于 2013-11-21T06:44:00.043 に答える
24

GDBダッシュボード

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

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

対TUI:

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

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

    ソース、アセンブリ、レジスタ、スタック、メモリ、スレッド、式など、最も便利なビューはすでに実装されていますが、GDBPythonAPIで公開されている情報を使用して簡単に拡張できるはずです。

    TUIでは、ソース、アセンブリ、レジスタの2つしか表示できません。それだけです。もちろん、変更したい場合を除いて、Cのソースコードです;-)

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

GDBは、箱から出してすぐにそのようなセットアップで出荷され、デフォルトでオンになっているはずです。そうすれば、はるかに多くのユーザーを引き付けることができます。

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

参照:インタラクティブなデバッグ中にgdb出力を強調表示して色付けする方法は?

于 2018-07-12T09:17:59.407 に答える
16

コマンド「-」(ダッシュ)を使用して、gdbシェルから起動することもできます。ただし、動的にオフにする方法はわかりません。

于 2012-11-27T09:05:05.677 に答える
13

gdblayoutにコマンドとして入力すると、分割ウィンドウが表示されます。

于 2014-06-30T14:37:39.397 に答える
8

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

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

詳細については、こちらをお読みください。

于 2014-06-13T18:22:12.167 に答える
2

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

cgdb

于 2018-03-25T03:17:29.753 に答える
1

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

于 2018-10-25T20:04:38.550 に答える