GDB(GNUプロジェクトデバッガとも呼ばれる)は、オープンソースで無料のコマンドラインソフトウェアであり、ユーザや開発者が別のプログラムの内部で何が起こっているのか、実行されているのか、アプリケーションがなぜ特定の時点でクラッシュします。
機能の概要
主な機能には、開発者がバグをキャッチし、アプリケーションを起動し、その動作に影響する可能性のあるものを指定し、指定した条件でプログラムを停止し、アプリケーションがクラッシュしたときにログを調べ、 1つの問題の影響を修正するためのプログラムを作成し、別のバグについて学習してください。また、C、C ++、Pascal、Ada、Objective-Cなど多くのプログラミング言語で書かれたプログラムのデバッグもサポートしています。
コマンドラインアプリケーションです
GNUプロジェクトデバッガは、常にコマンドラインアプリケーションであるということです。それを使用するには、“ gdb”を実行する必要があります。コマンドを端末エミュレータで実行し、“ help”を実行します。コマンド(引用符なし)にgdbプロンプトを表示します。また、“ help all”と入力することもできます。コマンドを使用してすべてのコマンドのリストを表示するには、「help」と入力してコマンド名を入力して完全なドキュメントを表示し、「help」と入力してクラス名を入力すると、そのクラスのコマンドのリストが表示され、「apropos word」 "単語"に関連するコマンドの場合
コマンドのクラスのリスト
“ help”と入力すると、エイリアス(他のコマンドのエイリアスを表示する)、ブレークポイント(特定のポイントでプログラムを停止させる)、データ(データを調べるための)、ファイル(ファイルを調べるためのファイル)などのコマンドのクラスのリストが表示されます。スタックを調べるためのスタック、ステータス照会のためのステータス、サポート機能のサポート、トレースポイント(プログラムの実行をトレースするための)プログラムを停止する)とユーザー定義の(ユーザー定義のコマンド)
サポートされているハードウェアプラットフォームとOS
GDBはオフセットから、クロスプラットフォームアプリケーションとして設計されており、Microsoft Windowsや最も普及しているLinux / UNIXのようなメインストリームオペレーティングシステム上で動作します。
PR gdb / 22824(GDBにおける新しいrbreak Python関数の誤解を招くような記述) 8.1 NEWSファイル)
PR gdb / 22849(ctrl-cは拡張リモートでは機能しません)
PR gdb / 22907([回帰] gdbserverはファイル名のみのバイナリでは動作しません)
PR gdb / 23028(矛盾したvcvtpd2dqの逆アセンブル)
PR gdb / 23053(修正-D_GLIBCXX_DEBUG gdb-add-index回帰)
PR gdb / 23127([AArch64] GDBは、高い仮想アドレスを使用するソフトウェアのデバッグには使用できません)
PRサーバー/ 23158(gdbserverはWindowsでは機能しなくなりました)
PRブレークポイント/ 23210([8.1 / 8.2回帰] 0xf7fe7dd3から0xfffffffff7fe7dd3に調整された偽のブレークポイントアドレス)
バージョン8.1の新機能:
C ++関数のブレークポイントはデフォルトですべてのスコープに設定されるようになりました( "ワイルド"マッチング)。
C ++ ABIタグでマークされた関数にブレークポイントを挿入するサポート。
式評価中に浮動小数点演算エミュレーションをターゲットにする(MPFR 3.1以降が必要)。
さまざまなPythonスクリプトの拡張。
改善された錆のサポート。特に、Rustコードのデバッグ時にTraitオブジェクトを検査できるようになりました。
GDBは、誤った、そしてしばしば混乱している結果を避けるために、情報のデバッグを行わずにシンボルのタイプについての仮定を作成しなくなりました。
'enable'コマンドと 'disable'コマンドは現在、ある範囲のブレークポイントの場所を受け入れます。
最初の命令でプログラムを開始する新しい 'starti'コマンド。
正規表現パターンでいくつかのブレークポイントを挿入する新しい 'rbreak'コマンド(Pythonが必要)。
'ptype'コマンドは、構造体のフィールドのオフセットとサイズの出力をサポートするようになりました。
'gcore'コマンドはすべてのメモリマッピングのダンプをサポートするようになりました( '-a'コマンドラインオプション)。
TUIシングル・キー・モードの新しいショートカット:stepiは 'i'、nextiは 'o'となります。
GDBserverの拡張機能:
環境変数をGDBサーバーに送信するためのサポート。
指定された初期作業ディレクトリで下位プロセスを開始するためのサポート。
Unixシステムでは、グロービング拡張と劣ったコマンドライン引数の可変置換をサポートしています。
さまざまな補完機能があります。
'compile'コマンドでコードをコンパイルして注入するためのコマンドが設定可能になりました。
デバッグ情報が不要なときにGDBの起動を高速化するための新しい '--readnever'コマンドラインオプション。
次の新しいネイティブ構成をサポートします。
FreeBSD / aarch64(aarch64 * - * - freebsd *);
FreeBSD / arm(arm * - * - freebsd *);
次の新しいターゲットのサポート:
FreeBSD / aarch64(aarch64 * - * - freebsd *);
FreeBSD / arm(arm * - * - freebsd *);
OpenRISC ELF(or1k * - * - elf)
次のターゲットとネイティブ構成のサポートを削除しました。
Solaris2 / x86(i?86 - * - solaris2。[0-9]);
Solaris2 / sparc(sparc * - * - solaris2。[0-9]);
バージョンの新機能:
GDBのこのバージョンをビルドするには、以下のツールが必要です。
C ++ 11コンパイラ(例えば、GCC 4.8以降)。
GNU makeバージョン3.81以降。
このリリースの変更点は次のとおりです。
C ++:右辺値参照のサポート
Pythonスクリプトの拡張機能:
実行中のbtrace記録を開始、停止、アクセスするための新しい機能。
gdb.TypeのRvalue参照のサポート
GDBコマンドインタープリタ:
ユーザーコマンドは、無制限の数の引数を受け入れるようになりました。
「eval」は、コマンドはユーザー定義の引数を展開するようになりました。
DWARFバージョン5のサポート
(その.debug_namesインデックスはまだサポートされていないことに注意してください)。
GDB / MIの拡張機能:
新しい-file-list-shared-librariesコマンドを使用して、プログラム内の共有ライブラリを一覧表示します。
新しい-target-flash-eraseコマンド。フラッシュメモリを消去します。
ネイティブFreeBSD / mips(mips * - * - freebsd)のサポート
次のターゲットのサポート:
Synopsys ARC(arc * - * - elf32)
FreeBSD / mips(mips * - * - freebsd)
その他の拡張機能:
コマンドラインのリダイレクトがMS-Windowsホストでサポートされるようになりました。
MS-Windows上のスレッド名のサポート。
GNU / Linux上のPKUレジスタのサポート。
sparc32およびsparc64でのターゲット記述のサポート。
フラッシュメモリを消去するための新しいGDB / CLIコマンド
rdrandおよびrdseed命令は、記録/再生をサポートします。
次の機能のサポートが削除されました:
gcjでコンパイルされたJavaプログラムのサポート
次の構成をサポートします。
FreeBSD / alpha(alpha * - * - freebsd *)
GNU / kFreeBSD / alpha(アルファ* - * - kfreebsd * -gnu)
PRビルド/ 18033(gdb / iq2000-tdep.cとgdb / compile / compile - *。cで使用されるC ++スタイルのコメント)
バージョン7.9.1の新機能: )
PRビルド/ 18298(quadrupletの代わりにtripletで構成されたツールの場合、 "compile"コマンドでコンパイラが見つかりません)
PR tui / 18311(TUIモードでレジスタを表示するときのランダムSEGV)
PR python / 18299(冗長モードでグローバルなpretty-printerを登録する際の例外)
PR python / 18066(引数 "word"はCommand.complete(text、word)で壊れているようです)
PRパスカル/ 17815(テスト・ケースを持つクラス・フィールドのパスカル動作を修正)
PR python / 18285(ptype expr-with-xmethodはSEGVを引き起こす)
バージョン7.9の新機能:
Pythonスクリプトの拡張。
ソースコードのコンパイルと下位への注入。
新しいコマンド、オプション、便利な変数/オプション。
MIPS SDEサポート(mips * -sde * -elf *)。
スレッド化されたプログラムをデバッグする際のシグナル処理が改善されました。
PR symtab / 17642(7.8回帰)内部エラー:resolve_dynamic_struct:アサーション `TYPE_NFIELDS(type)> 0 'は失敗しました。
バージョン7.8.2の新機能:
)PR binutils / 17677(_bfd_elf_get_synthetic_symtabはO(n ^ 2)の複雑さで実行されます)
PR gdb / 16215(SPARC:このフレームのCFAを計算することはできません)
PR gdb / 17525(target-async:-xスクリプトからプログラムを実行するとブレークポイントコマンドは実行されません)
PR cli / 17828([7.8回帰] - バッチ-exrは端末を切断する)
バージョン7.8.1の新機能:
PR python / 17364(bound_registers.pyの方が良いプリンタ名が必要です)
PRビルド/ 17104(CFLAGS = "-Wall -Wextra" gdb / confgure --with-babeltraceは失敗する)
PR gdb / 17345(babeltrace(1.1.2以降)はGDBによって生成されたctfデータについて不平を言います)
PRビルド/ 17298(gcore:レジスタを取得できませんでした:そのようなプロセスはありません)
PR python / 17342(Xmethod PythonはPython 3と互換性がありません)
PR python / 17355(読み込み不可能なargを持つPythonフレームフィルタでクラッシュする)
PR guile / 17367(pkg-configスクリプトが--with-guileにargとして提供されたときにギルドパスの計算が間違っている)
PR gdb / 17247(マルチスレッドアプリケーションでgdbがフリーズする)
PR gdb / 17347(回帰:GDBはプロセスの実行中に実行を停止しました)
PR gdb / 17407(回帰Linux vDSOの読み込み用)
PRサーバー/ 17457(aarch64 / gdbserver:間違った浮動小数点レジスタの表示)
PRサーバー/ 17487(状態 - > dr_control_mirror == 0 Windows上のgdbserverでアサーションに失敗しました)
PR gdb / 17472(注釈付きで、フォアグラウンドで実行中に入力するとreadline / gdbがクラッシュする)
PR gdb / 17471(バックグラウンド・コマンドを繰り返してフォアグラウンドにする)
PR cli / 17300(ノンストップモードでクラッシュし、ハンドラなしで呼び出されたcontinue -a&(readline_callback_read_char()))
PR python / 17372(help()を表示すると、pythonがハングします)
PR python / 17408(../../gdb/infrun.c:5256:内部エラー:switch_back_to_stepped_thread:アサーション `!schedlock_applies(1) 'が失敗しました)
バージョン7.8の新機能:
Guileスクリプトのサポート。
Pythonスクリプトの拡張。
新しいコマンド、オプション、便利な変数/オプション。
リモートプロトコルとGDBサーバの拡張機能。
新しいターゲット設定(PowerPC64 GNU / Linuxリトルエンディアン)。
btraceの強化。
ISO C99可変長自動配列サポート。
「比較セクション」は、コマンドはすべてのターゲットで機能するようになりました。
「標的天然」ポリペプチドは、コマンドがネイティブターゲットに接続するようになりました。
バージョン7.7の新機能:
拡張されたPythonスクリプトのサポート。
いくつかのC ++の改良。
新しいコマンド、オプション、便利な変数/オプション。
いくつかのGDB / MIの新しいコマンドと拡張。
リモートプロトコルとGDBサーバの拡張機能。
新しいターゲット構成(Nios II、TI MSP430)。
GDB Windows x64アンワインディングデータサポート。
SystemTap SDTプローブはAArch64 GNU / Linuxでサポートされています。
CTF(Common Trace Format)をサポートしています。
新しいスクリプトgcoreとgdb-add-index.sh。
改良されたarm * -linuxの記録/再生サポート。
a.out NetBSDおよびOpenBSDの廃止された設定のサポートが削除されました。これらの構成のELFバリアントはサポートされています。
「set | show remotebaud」は、コマンドは、 "show | show serial baud"のために推奨されなくなりました。
PRブレークポイント/ 16251(フォーク後のAArch64ハードウェアブレークポイントエラー)
バージョン7.6.2の新機能:
PR gdb / 16303(GIPS 7.6.1はMIPS16とmicroMIPSのbinutils 2.24では動作しません)
バージョン7.6.1の新機能:
PR tdep / 15420(新しいバージョンのx86-solarisでスレッドプログラムをデバッグできない - Solaris 10、Update 10以降)
PRリモート/ 15455(QTroリモートパケットが壊れています)
PRビルド/ 15476(utils.hの不完全なenum型によるビルドの失敗)
PRサーバー/ 15594(64x32 x86 gdbserverのtlsサポートはアドレスを64ビットに拡張しません)
PRサーバー/ 15075(dprintfは「次」を含む)
PRサーバー/ 15434(dprintfはノンストップモードでも同期「継続」を使用します)
PR tui / 14880(分割レジスタのレイアウトでは、upの結果、value.cのアサーションが失敗します)
PR c ++ / 15519(GDB 7.6は特定のコアファイルを使用するGDB 7.5.1よりも94倍遅い)
PR gdb / 15837(GDBはローカル変数のエントリ値を出力します)
PR gdb / 15415(argv [0]を渡すときにgdbがシンボリックリンクを解決する)
PR cli / 15603(CTRL-Cはもはや劣等を中断することはできません)
PR gdb / 15604(gdbserverソケットリーク7.5回帰)
バージョン7.5の新機能:
Go言語サポート。
新しいターゲット(x32 ABI、microMIPS、Renesas RL78、HP OpenVMS ia64)
より多くのPythonスクリプトの改善。
SDT(Static Defined Tracing)プローブはSystemTapプローブでサポートされています。
GDBサーバーの改良(stdio接続、ターゲット側でのブレークポイント条件の評価、リモートプロトコルの改良)
その他のその他の改善点(共有ライブラリのロード/アンロード時の停止機能、動的printfなど)。
ARMでの逆デバッグ。
バイナリ「gdbtui」は、放棄され、もはや建設することができません。 " gdb -tui"代わりに。
バージョン7.4の新機能:
あいまいなラインスペックは、より一貫して処理されるようになりました。
「スキップ機能」を使用してステッピングするときに、関心のない機能およびファイルをスキップすることができるようになりました。 「スキップファイル」とは、コマンド。
リモートターゲットハードウェアウォッチポイントの最大長制限を設定および取得するためのコマンドが追加されました。
Pythonスクリプトは大幅に改善されました。
その他の多くの改善、バグ修正、および一般的な変更が行われました。
バージョン7.1の新機能:
新しいターゲット(シミュレータを含む)のサポート:
ザイリンクスMicroBlaze
ルネサスRX
主な新機能は次のとおりです。
マルチプログラムのデバッグ。デバッガが複数の
同じGDBセッション内の1つのプログラム
Position Independent Executable(PIE)のデバッグ
また、次のような多くの機能拡張とバグ修正が行われています。
Pythonのサポートが拡張されました。
C ++サポートの改善(名前空間、キャスト演算子、バグ修正)
トレースポイントのサポートの改善。
プロセスレコードの改善(実行ログの保存/復元、ハードウェア
ウォッチポイントサポート)。
リモートプロトコルの拡張(Linuxカーネルのデバッグ、新しいパケット
トレースポイントサポート用)
コメントが見つかりません