A.4. GDB の変更点

Red Hat Developer Toolset 10.0 には GDB 9.2 が同梱されています。

以下の機能は、Red Hat Developer Toolset の以前のリリース以降に追加または変更されています。

新機能

  • debuginfod サーバーがサポートされるようになりました。これは、ELF および DWARF のデバッグ情報およびソースコードを配布するための HTTP サーバーです。

新しい便利な変数および関数

  • $_gdb_major

    $_gdb_minor

    GDB の実行中のバージョンをテストするための新しい便利な変数を使用すると、レガシースクリプトを破損することなく新しいコマンドおよび構文を実行できます。

  • $_gdb_setting

    $_gdb_setting_str

    $_gdb_maint_setting

    $_gdb_maint_setting_str

    GDB 設定へのアクセスに、これらの新しい便利な機能を使用すると、現在の GDB 設定に応じてユーザー定義コマンドのロジックを変更できます。

  • $_cimag

    $_creal

    この新たな便利な関数を使用すると、年号および実際の数字の部分を取得することができます。

  • $_shell_exitcode

    $_shell_exitsignal

    この新しい便利な変数を使用すると、GDB、shellpipemake コマンドが実行するシェルコマンドの終了コードまたは終了ステータスにアクセスできます。

新規コマンドおよび改善されたコマンド

  • たとえば、新しいコマンドオプションインフラストラクチャーがサポートを強化できるように提供されました。たとえば、CMD -[TAB] が CMD で利用可能なコマンドオプションが完了したかどうかを確認できるようになりました。
  • コマンド名が . 文字を使用できるようになりました。
新しいコマンド
  • define-prefix

    このコマンドでは、abc def および abc def ghi などの独自の接頭辞コマンドを個別に定義できます。

  • | [command] | shell_command (another name of this command is pipe)

    このコマンドは、指定した GDB コマンド を実行し、出力を指定の shell_command に送信します。

  • with setting [value] [-- command]

    このコマンドは、指定の 設定 に設定し (指定されている場合)、オプションの コマンド を実行して、完了時に 設定 がリセットされます。

変更したコマンド
  • help

    apropos

    コマンドでは、新しいタイトルのスタイリングが使用されるようになりました。

  • printf

    eval

    このコマンドは、たとえばコアダンプのデバッグ時など、実行中のプロセスなしに C 形式の文字列と Ada 形式の文字列の変数を出力できるようになりました。

  • info sources [-dirname | -basename] [--] [regexp]

    新しいフィルタリングオプションが追加されました。これらを使用することで、ユーザーは、結果を、指定した正規表現に一致するファイル、ディレクトリー、またはベース名に制限できます。

  • focus

    winheight

    +->、および <

    これらの TUI コマンドが大文字と小文字を区別するようになりました。

  • backtrace

    コマンドが、グローバル表示設定 (set backtrace および set print 設定) を上書きする新しいオプションに対応するようになりました。新規オプションには、-entry-valuesframe-arguments-raw-frame-arguments, -frame-info-past-main-past-entry-full-no-filters-hide が含まれます。

  • frame apply

    tfaas

    faas

    このコマンドは、新しい -past-main および -past-entry コマンドオプションに対応するようになりました。

  • info types

    このコマンドが、info variables および’ info functions などの一部のヘッダー情報の出力を無効にする新しい -q オプションに対応するようになりました。

  • info variables

    info functions

    whereis

    このコマンドが、出力から非デバッグシンボルを除外する新しい -n オプションに対応するようになりました。

設定
  • set may-call-functions

    show may-call-functions

    デフォルト値は on です。これらの新しいコマンドは、コマンドの実行中 (たとえば print expression コマンド) に GDB がプログラムで関数の呼び出しを試みるかどうかを制御します。

  • set print finish

    show print finish

    これらのコマンドが on に設定されていると、finish コマンドの使用時に、GDB が現在の関数が返す値を出力します。

  • set print max-depth

    show print max-depth

    これらの新たなコマンドにより、ネストされた構造の表示がレベル数に制限されます。ネストレベルのデフォルトの制限は 20 です。

  • set print raw-values

    show print raw-values

    これらの新しいコマンドは、値を出力する際に Pretty-printers の使用をグローバルに上書きします。デフォルト値は off です。

  • set style title foreground

    set style title background

    set style title intensity

    set style highlight foreground

    set style highlight background

    set style highlight intensity

    これらの新しいコマンドを使用して、タイトルの表示スタイルをカスタマイズし、スタイルを強調表示できます。

  • maint set worker-threads

    maint show worker-threads

    実験的: これらのコマンドが unlimited に設定されていると、GDB はマルチスレッドシンボルローディングを使用してパフォーマンスを向上させます。

  • set style tui-border foreground

    set style tui-border background

    set style tui-border intensity

    set style tui-active-border foreground

    set style tui-active-border background

    set style tui-active-border intensity

    これらの新しいコマンドは、さまざまな TUI フレームの表示スタイリングを設定します。

  • set print frame-info

    show print frame-info

    この新しいコマンドは、フレームを出力するコマンドによって出力されるフレーム情報を制御します (例 backtraceframestepi)。

  • set tui compact-source

    show tui compact-source

    これらの新しいコマンドにより、TUI ソースウィンドウの新しい compact 表示スタイルが有効になります。

  • set debug remote-packet-max-chars

    show debug remote-packet-max-chars

    これらの新たなコマンドは、set debug remote を使用する際にリモートパケットで出力する文字数を制御します。デフォルト値は 512 バイトです。

  • show style

    この新しいコマンドで、独自のスタイリングを使用して、すべてのサブコマンドの出力をスタイルできるようになりました。

  • set print frame-arguments

    新しい値 presence が追加されました。実際の引数名と値を出力する代わりに、 の引数の有無のみを表示します。

  • set print-raw-frame-arguments

    show print-raw-frame-arguments

    この 2 つのコマンドは、非推奨の set/show print raw frame-arguments コマンドに代わるものです。

言語固有の改善

Fortran

  • GDB は、:: 演算子を使用してネストされた関数またはサブルーチンにブレークポイントを設定できるようになりました。
  • info modules [-q] [regexp]

    この新しいコマンドは、regexp に一致するモジュールの一覧を返します。regexp が指定されていない場合、コマンドはモジュールの一覧を返します。

  • info module functions [-q] [-m module_regexp] [-t type_regexp] [regexp]

    info module variables [-q] [-m module_regexp] [-t type_regexp] [regexp]

    これらの新しいコマンドは、モジュールによってグループ化されたすべてのモジュール内の関数または変数の一覧を返します。結果は、モジュールの正規表現、関数、または変数タイプ署名の正規表現、または名前の正規表現によって制限される可能性があります。

Python API

  • gdb.Value.format_string

    この新しいメソッドは、Value オブジェクトを表す文字列を返します。

  • gdb.Type objfile

    この新しいプロパティーは、タイプが定義されている objfile を返します。

  • gdb.lookup_static_symbol

    gdb.lookup_static_symbols

    この新しい関数は、静的リンクを使用したシンボルの検索をサポートします。最初の関数は、最初に一致した記号を返します。2 つ目は、一致するシンボルをすべて返します。

  • gdb.Objfile.lookup_global_symbol

    gdb.Objfile.lookup_static_symbol

    これら新しい関数は、Objfile のシンボルの検索に対応しています。これは、グローバルシンボルおよび静的リンクを持つシンボルです。

  • gdb.Block

    この関数が Python ディクショナリー構文に対応するようになりました。たとえば、シンボルが gdb.Symbol 型の symbol = some_block[variable] です。

Machine Interface (MI) の改善点

  • 新しいデフォルトの MI バージョン 3 が導入されました (-i=mi3)。

    • マルチロケーションブレークポイントの場所の出力が修正されました。
    • 新しい -fix-multi-location-breakpoint-output コマンドが追加され、古い MI バージョンの構文エラーを修正するようになりました。
  • 新しいコマンドはすべて、CLI の MI 実装です。

    • -complete LINE
    • -catch-throw
    • -catch-rethrow
    • -catch-catch
    • -symbol-info-functions
    • -symbol-info-types
    • -symbol-info-variables
    • -symbol-info-modules
    • -symbol-info-module-functions
    • -symbol-info-module-variables