A.4. GDB の変更点
Red Hat Developer Toolset 10.0 には GDB 9.2 が同梱されています。
以下の機能は、Red Hat Developer Toolset の以前のリリース以降に追加または変更されています。
新機能
-
debuginfodサーバーがサポートされるようになりました。これは、ELF および DWARF のデバッグ情報およびソースコードを配布するための HTTP サーバーです。
新しい便利な変数および関数
$_gdb_major$_gdb_minorGDB の実行中のバージョンをテストするための新しい便利な変数を使用すると、レガシースクリプトを破損することなく新しいコマンドおよび構文を実行できます。
$_gdb_setting$_gdb_setting_str$_gdb_maint_setting$_gdb_maint_setting_strGDB 設定へのアクセスに、これらの新しい便利な機能を使用すると、現在の GDB 設定に応じてユーザー定義コマンドのロジックを変更できます。
$_cimag$_crealこの新たな便利な関数を使用すると、年号および実際の数字の部分を取得することができます。
$_shell_exitcode$_shell_exitsignalこの新しい便利な変数を使用すると、GDB、
shell、pipe、makeコマンドが実行するシェルコマンドの終了コードまたは終了ステータスにアクセスできます。
新規コマンドおよび改善されたコマンド
-
たとえば、新しいコマンドオプションインフラストラクチャーがサポートを強化できるように提供されました。たとえば、
CMD -[TAB]が CMD で利用可能なコマンドオプションが完了したかどうかを確認できるようになりました。 -
コマンド名が
.文字を使用できるようになりました。
新しいコマンド
define-prefixこのコマンドでは、
abc defおよびabc def ghiなどの独自の接頭辞コマンドを個別に定義できます。| [command] | shell_command(another name of this command ispipe)このコマンドは、指定した GDB コマンド を実行し、出力を指定の shell_command に送信します。
with setting [value] [-- command]このコマンドは、指定の 設定 を 値 に設定し (指定されている場合)、オプションの コマンド を実行して、完了時に 設定 がリセットされます。
変更したコマンド
helpaproposコマンドでは、新しいタイトルのスタイリングが使用されるようになりました。
printfevalこのコマンドは、たとえばコアダンプのデバッグ時など、実行中のプロセスなしに C 形式の文字列と Ada 形式の文字列の変数を出力できるようになりました。
info sources [-dirname | -basename] [--] [regexp]新しいフィルタリングオプションが追加されました。これらを使用することで、ユーザーは、結果を、指定した正規表現に一致するファイル、ディレクトリー、またはベース名に制限できます。
focuswinheight+、-、>、および<これらの TUI コマンドが大文字と小文字を区別するようになりました。
backtraceコマンドが、グローバル表示設定 (
set backtraceおよびset print設定) を上書きする新しいオプションに対応するようになりました。新規オプションには、-entry-values、frame-arguments、-raw-frame-arguments,-frame-info、-past-main、-past-entry、-full、-no-filters、-hideが含まれます。frame applytfaasfaasこのコマンドは、新しい
-past-mainおよび-past-entryコマンドオプションに対応するようになりました。info typesこのコマンドが、
info variablesおよび’info functionsなどの一部のヘッダー情報の出力を無効にする新しい-qオプションに対応するようになりました。info variablesinfo functionswhereisこのコマンドが、出力から非デバッグシンボルを除外する新しい
-nオプションに対応するようになりました。
設定
set may-call-functionsshow may-call-functionsデフォルト値は
onです。これらの新しいコマンドは、コマンドの実行中 (たとえばprint expressionコマンド) に GDB がプログラムで関数の呼び出しを試みるかどうかを制御します。set print finishshow print finishこれらのコマンドが
onに設定されていると、finishコマンドの使用時に、GDB が現在の関数が返す値を出力します。set print max-depthshow print max-depthこれらの新たなコマンドにより、ネストされた構造の表示がレベル数に制限されます。ネストレベルのデフォルトの制限は 20 です。
set print raw-valuesshow print raw-valuesこれらの新しいコマンドは、値を出力する際に Pretty-printers の使用をグローバルに上書きします。デフォルト値は
offです。set style title foregroundset style title backgroundset style title intensityset style highlight foregroundset style highlight backgroundset style highlight intensityこれらの新しいコマンドを使用して、タイトルの表示スタイルをカスタマイズし、スタイルを強調表示できます。
maint set worker-threadsmaint show worker-threads実験的: これらのコマンドが
unlimitedに設定されていると、GDB はマルチスレッドシンボルローディングを使用してパフォーマンスを向上させます。set style tui-border foregroundset style tui-border backgroundset style tui-border intensityset style tui-active-border foregroundset style tui-active-border backgroundset style tui-active-border intensityこれらの新しいコマンドは、さまざまな TUI フレームの表示スタイリングを設定します。
set print frame-infoshow print frame-infoこの新しいコマンドは、フレームを出力するコマンドによって出力されるフレーム情報を制御します (例
backtrace、frame、stepi)。set tui compact-sourceshow tui compact-sourceこれらの新しいコマンドにより、TUI ソースウィンドウの新しい
compact表示スタイルが有効になります。set debug remote-packet-max-charsshow debug remote-packet-max-charsこれらの新たなコマンドは、
set debug remoteを使用する際にリモートパケットで出力する文字数を制御します。デフォルト値は 512 バイトです。show styleこの新しいコマンドで、独自のスタイリングを使用して、すべてのサブコマンドの出力をスタイルできるようになりました。
set print frame-arguments新しい値
presenceが追加されました。実際の引数名と値を出力する代わりに、…の引数の有無のみを表示します。set print-raw-frame-argumentsshow 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.Typeobjfileこの新しいプロパティーは、タイプが定義されている
objfileを返します。gdb.lookup_static_symbolgdb.lookup_static_symbolsこの新しい関数は、静的リンクを使用したシンボルの検索をサポートします。最初の関数は、最初に一致した記号を返します。2 つ目は、一致するシンボルをすべて返します。
gdb.Objfile.lookup_global_symbolgdb.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
-