サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
www.asahi-net.or.jp/~wg5k-ickw
ブレイクポイント・コマンド (ブレイクポイント・コマンド・リスト参照) とは別に、 一連のコマンドを一括して実行するために保存する2つの方法を、 GDBは提供しています。 ユーザ定義コマンドとコマンド・ファイルがそれです。 ユーザ定義コマンド ユーザ定義コマンドとは、 一連のGDBコマンドに単一コマンドとしての名前を新たに割り当てたものです。 これは、 defineコマンドによって行われます。 ユーザ・コマンドは、 空白で区切られた引数を最高で10個まで受け取ることができます。 引数は、 ユーザ・コマンドの中で、 $arg0...$arg9としてアクセスすることができます。 簡単な例を以下に示します。 define adder print $arg0 + $arg1 + $arg2 このコマンドを実行するには以下のようにします。 adder 1 2 3 上の例では、 adderというコマン
ユーザ・プログラムが停止したとき、 まず最初に、 どこで停止したのか、 そして、 どのようにしてそこに到達したのかを知る必要があるでしょう。 ユーザ・プログラムが関数呼び出しを行うたびに、 その呼び出しに関する情報が生成されます。 その情報には、 ユーザ・プログラム内においてその呼び出しが発生した場所、 関数呼び出しの引数、 呼び出された関数内部のローカル変数などが含まれます。 その情報は、 スタック・フレームと呼ばれるデータ・ブロックに保存されます。 スタック・フレームは、 呼び出しスタックと呼ばれるメモリ域に割り当てられます。 ユーザ・プログラムが停止すると、 スタックを検査するGDBコマンドを使用して、 この情報をすべて見ることができます。 GDBは1つのスタック・フレームを選択していて、 多くのGDBコマンドはこの選択されたフレームを暗黙のうちに参照します。 特に、 GDBに対して
プログラムをGDB配下で実行するには、 コンパイル時にデバッグ情報を生成する必要があります。 ユーザが選択した環境で、 必要に応じて引数を指定して、 GDBを起動することができます。 プログラムの入力元と出力先をリダイレクトすること、 既に実行中のプロセスをデバッグすること、 子プロセスを終了させることもできます。 デバッグのためのコンパイル プログラムを効率的にデバッグするためには、 そのプログラムのコンパイル時にデバッグ情報を生成する必要があります。 このデバッグ情報はオブジェクト・ファイルに格納されます。 この情報は、 個々の変数や関数の型、 ソース・コード内の行番号と実行形式コードのアドレスとの対応などを含みます。 デバッグ情報の生成を要求するには、 コンパイラの実行時に`-g'オプションを指定します。 多くのCコンパイラでは、 `-g'オプションと`-O'オプションを同時に指定す
デバッガを使用する主な目的は、 プログラムが終了してしまう前に停止させたり、 問題のあるプログラムを調査して何が悪いのかを調べたりすることにあります。 GDB内部においてプログラムが停止する原因はいくつかあります。 例えば、 シグナルの受信、 ブレイクポイントへの到達、 stepコマンドのようなGDBコマンドの実行後の新しい行への到達などです。 プログラムが停止すると、 変数の値の調査や設定、 新しいブレイクポイントの設定、 既存のブレイクポイントの削除などを行った後に、 プログラムの実行を継続することができます。 通常、 GDBが表示するメッセージは、 ユーザ・プログラムの状態について多くの情報を提供してくれます。 ユーザはいつでも明示的にこれらの情報を要求することができます。 info program ユーザ・プログラムの状態に関する情報を表示します。 表示される情報は、 そのプログラ
ここでは、 読者がプログラムの中で使うことのできる、 ちょっとしたFlex定義を一覧にして示します。 多くは、 このマニュアルを読んだあとでは、 かなり自明のものになるはずです。 しかし、 読者がこうしたコードを最初から作らずに済むように、 ここに入れてあります。 コメントの処理 FlexとCにおいて述べたように、 コメントはinput()を使って処理することができます。 これを行うためのコードは以下のようになります。 %% "/*" { int a,b; a = input(); while(a != EOF){ b = input(); if(a == '*' && b == '/'){ break; }else{ a = b; } } if(a == EOF){ error_message("EOF in comment"); } } これは、 FlexとLexの両方で正当なコードで
ユーザ・プログラムの中のデータを調べる通常の方法は、 printコマンド (省略形はp)、 またはそれと同義のコマンドである inspectコマンドを使用することです。 これは、 ユーザ・プログラムが記述された言語 (異なる言語の使用を参照) による式を評価し、 その値を出力するものです。 print exp print /f exp expは (ソース言語による) 式です。 デフォルトでは、 expの値は、 expのデータ型にとって適切な形式で表示されます。 `/f'を指定することで、 他の形式を選択することも可能です。 `/f'のfは形式を指定する文字です。 出力フォーマットを参照。 print print /f expを省略すると、 GDBは値ヒストリ (値ヒストリを参照) の最後の値を再表示します。 これは、 同じ値を異なる形式で調べるのに便利です。 データを調べるためのより低レベ
この章では字句スキャン処理の概念を紹介し、 Flexのようなツールの必要性を指摘します。 この章の後半部分でFlexを紹介し、 Flexを使うことのできる状況の実例をいくつか紹介します。 UnixおよびCの世界では、 ファイルは通常個々のバイトが連続したものとして扱われます。 個々のバイトを集めてどのようにグループ化するかという点は、 プログラマが決めることです。 このような抽象化は非常に強力です。 というのは、 どのようなファイルであってもこの抽象化方法によって表現することができるからです。 しかしこの方法には短所もあり、 プログラマはほとんど常に生のファイルに対して構造をあてはめなければなりません。 言葉を変えると、 ファイルをより意味のある部分に分割しなければならないということです。 例えば、 コンパイラのある部分はファイルから連続した文字を受け取り、 構文チェッカが理解することので
この章では、 スキャナ定義の構成要素を説明し、 その使用例を示します。 Flexを効率的に使用するためには、 定義の個々の要素を完全に理解することが非常に重要です。 したがって、 初めてFlexを使うユーザには、 時間をかけてこの章を読むことをお勧めします。 Flexスキャナ定義のほとんどの要素は、 必須要素ではありません。 全体的な定義フォーマットは以下のようになります。 定義、初期Cコード %% ルール %% 他のCコード 各々について、 以下において詳細に説明します。 コメント Cのコードが記述できるところには、 どこにでもコメントを記述することができます。 コメントの書式は、 Cのコメントの規則に従います。 コメントは、 記述情報に影響を与えることはありません。 Cスタイルのコメントは以下のようになります。 /* ... */ これに加えて、 Flexでは`#'で始まるコメントも許
ここに記載されている情報は、 GNUシステムまたはUNIXシステム上にGNU CCをインストールするための手順です。 VMSシステム上でのインストールに関しては、 VMSへのGNU CCのインストールを参照してください。 このセクションでは、 ソース・ファイルの置かれているディレクトリにおいてコンパイルをすることを想定しています。 UNIXシステム上において これとは異なるディレクトリにおいてコンパイルする方法については、 別ディレクトリにおけるコンパイルを参照してください。 MSDOS上では、 GNU Cを単独でインストールすることはできません。 GNU C以外のどのようなMSDOS上のコンパイラを使っても、 GNU Cをコンパイルすることはできません。 完全なコンパイラ・パッケージであるDJGPPを入手する必要があります。 DJGPPには、 ソースだけではなくバイナリも含まれていて、
この章ではCおよびBisonと一緒にFlexを使う方法を説明します。(7)C、Bisonのそれぞれが非常に多くの細目を含むため、 本章は2つの部分に分割されています。 その両方に、 全般的なインターフェイス概念に関する節と実例を示す節があります。 FlexとC Flexに対するCの主要なインターフェイスは、 以下に挙げるルーチンと変数によるものです。 以下の節を読む際には、 いくつかの細かな部分でFlexとLexとの間に相違点があるということを意識しておいてください。 Lexが提供していない関数がいくつかありますし、 宣言の内容が違うものもあります。 こうした相違点は、 通常大きな問題にはなりません。 というのは、 相違のある関数は一般的にはあまり使われていないからです。 相違点に関する詳細については、 Flex と Lexおよび FlexとPOSIXを参照してください。 関数 説明と実例
この章では、 GNUのコマンドライン編集インターフェイスの基本的な特徴について説明します。 行編集入門 以下のパラグラフでは、 キー・ストロークを表わすために使用される表記法について説明します。 C-kは、 Control-Kという意味です。 これは、 コントロール・キーが押されたままの状態でキーkが押されたときに生成される文字を表わします。 M-kは、 Meta-Kという意味です。 これは、 メタ・キー (があるものとして、それ) が押されたままの状態でキーkが押されたときに生成される文字を表わします。 メタ・キーがない場合、 最初にESCキーを押し、 次にキーkを押すことで、 同等のキー・ストロークを生成することができます。 どちらの手順も、 キーkをメタ化する、 といいます。 M-C-kは、 Meta-Control-Kという意味です。 これは、 C-kをメタ化することにより生成され
[Contents] [Back] [Prev] [Up] [Next] [Forward] GNU Emacsの中でのGDBの使用 GDBでデバッグ中のプログラムのソース・ファイルをGNU Emacsを使って参照(および編集)するための、 特別なインターフェイスが提供されています。 このインターフェイスを使うには、 Emacsの中でM-x gdbコマンドを使います。 デバッグしたい実行ファイルを引数として指定してください。 このコマンドは、 GDBをEmacsのサブプロセスとして起動し、 新しく作成したEmacsバッファを通じて入出力を行います。 Emacsの中でのGDBの使い方は、 通常のGDBの使い方とほぼ同様ですが、 2つ相違点があります。 「端末」へのすべての入出力はEmacsバッファへ送られる。 これは、 GDBコマンドとその出力、 および、 デバッグ対象の
ターゲットとは、 ユーザ・プログラムが持つ実行環境を指します。 多くの場合、 GDBはユーザ・プログラムと同一のホスト環境上で実行されます。 この場合には、 fileコマンドやcoreコマンドを実行すると、 その副作用としてデバッグ・ターゲットが指定されます。 例えば、 物理的に離れた位置にあるホスト・マシン上でGDBを実行したい場合や、 シリアル・ポート経由でスタンドアロン・システムを制御したい場合、 または、 TCP/IP接続を利用してリアルタイム・システムを制御したい場合などのように、 より多くの柔軟性が必要とされる場合、 targetコマンドを使うことによって、 GDBに設定されたターゲットの種類の中から1つを指定することができます (ターゲットを管理するコマンドを参照)。 アクティブ・ターゲット ターゲットには3つのクラスがあります。 プロセス、コア・ファイル、 そして、 実行フ
コンパイラの全体的な制御構造は、 `toplev.c'にあります。 このファイルは、 初期化、引数のデコード、ファイルのオープンとクローズ、パスの実行順序に責任を持ちます。 解析パスは、 入力全体を解析するために、 一度だけ実行されます。 関数が解析されると、 その関数に対応するRTL中間コードが、 一度に一文ずつ生成されます。 個々の文は、 構文ツリーとして読み込まれ、 RTLに変換されます。 その後に、 その文に対応するツリーの記憶域が解放されます。 型(および、そのサイズを表す式)、宣言、 およびバインディングの輪郭(binding contour)とそのネストの仕方を表す情報のための記憶域は、 関数のコンパイルが終了するまで保持されます。 これらはいずれも、 デバッグ情報を出力するのに必要となります。 解析パスにおいて、 完全な関数定義、 またはトップ・レベルの宣言が読み込まれるた
このマニュアルでは、 Javaプログラミング言語用のGNUコンパイラgcjの使い方を説明します。 gcjは、 クラスファイル(`.class')、 オブジェクトファイルの両方を生成することができます。 また、 Javaソースコード、 クラスファイル(`.class')の両方を読み込むことができます。
ターゲットとは、 ユーザ・プログラムが持つ実行環境を指します。 多くの場合、 GDBはユーザ・プログラムと同一のホスト環境上で実行されます。 この場合には、 fileコマンドやcoreコマンドを実行すると、 その副作用としてデバッグ・ターゲットが指定されます。 例えば、 物理的に離れた位置にあるホスト・マシン上でGDBを実行したい場合や、 シリアル・ポート経由でスタンドアロン・システムを制御したい場合、 または、 TCP/IP接続を利用してリアルタイム・システムを制御したい場合などのように、 より多くの柔軟性が必要とされる場合、 targetコマンドを使うことによって、 configureによって設定されたGDBのターゲットの種類の中から1つを指定することができます (ターゲットを管理するコマンド参照)。 アクティブ・ターゲット ターゲットには3つのクラスがあります。 プロセス、コア・ファ
プログラムをGDB配下で実行するには、 コンパイル時にデバッグ情報を生成する必要があります。 ユーザが選択した環境で、 必要に応じて引数を指定して、 GDBを起動することができます。 ネイティブ環境でデバッグを行っているのであれば、 プログラムの入力元と出力先をリダイレクトすること、 既に実行中のプロセスをデバッグすること、 子プロセスを終了させることもできます。 デバッグのためのコンパイル プログラムを効率的にデバッグするためには、 そのプログラムのコンパイル時にデバッグ情報を生成する必要があります。 このデバッグ情報はオブジェクト・ファイルに格納されます。 この情報は、 個々の変数や関数の型、 ソース・コード内の行番号と実行形式コードのアドレスとの対応などを含みます。 デバッグ情報の生成を要求するには、 コンパイラの実行時に`-g'オプションを指定します。 多くのCコンパイラでは、 `
GCCを起動すると、 通常は、 前処理(preprocessing)、 コンパイル、 アセンブル、 リンクが行われます。 「全体的(overall)オプション」によって、 この一連の処理を中途の段階で停止することができます。 例えば、 `-c'オプションはリンカを起動しないよう指示するものです。 この場合、 アセンブラによって生成されるオブジェクト・ファイルが出力となります。 他のオプションは、 一連の処理の中の1つの段階に渡されるものです。 オプションの中には、 プリプロセッサを制御するものもあり、 コンパイラ自体を制御するものもあります。 また、 アセンブラやリンカを制御するオプションもありますが、 それらのほとんどは、 ここではドキュメント化されていません。 というのは、 このようなオプションを使うことが必要になることはめったにないからです。 GCCにおいて使うことのできるコマンドラ
GNU Cは、 ANSIの標準Cにはない特徴的な言語機能をいくつか提供しています (`-pedantic'オプションは、 これらの機能が使われた場合に 警告メッセージを出力するようGNU CCに対して指示するものです)。 条件コンパイルにおいて、 これらの機能が利用可能であるかどうかをテストするためには、 __GNUC__というマクロが事前に定義されているかどうかをチェックします。 この__GNUC__というマクロは、 GNU CCでは常に定義されています。 これらの拡張機能はCとObjective Cで利用可能です。 また、 そのほとんどはC++でも利用可能です。 C++にのみ適用可能な拡張機能については、 C++言語に対する拡張機能を参照してください。 式の中の文と宣言 GNU Cにおいては、 丸括弧()で囲まれた複文を1つの式とみなすことができます。 これによって、 1つの式の中でル
字句スキャナ生成プログラム Flex 2.3.7、1.03版 1993年2月 G. T. Nicol 著 序 プログラムの実例について Flex入門 問題解決手段としてのFlex 一般的なプログラミング・ツールとしてのFlex Flexの起動 コマンドライン・オプション コマンドライン・オプション(Flex 2.5の補足情報) Flex記述言語 コメント オプションのCコード 定義 %% ルール パターン・セクション 文字 Flexにおける文字列 Flexにおける文字のグループ化 Flexにおける文字のグループ化(Flex 2.5の補足情報) 正規表現 スタート状態 スタート状態の説明 状態の活性化 スタート状態に関する注 スタート状態に関する注(Flex 2.5の補足情報) スタート状態の使用例 %option(Flex 2.5の補足情報) Flexとのインターフェイス FlexとC F
C、C++、Objective C、Fortranのコンパイル GCCコマンド・オプション オプションの要約 出力の種類を制御するオプション C++プログラムのコンパイル Cの方言を制御するオプション C++の方言を制御するオプション 警告を要求もしくは抑制するオプション ユーザ・プログラムまたはGCCをデバッグするためのオプション 最適化を制御するオプション プリプロセッサを制御するオプション アセンブラへのオプション渡し リンク処理用のオプション ディレクトリ探索のためのオプション ターゲット・マシンとコンパイラ・バージョンの指定 ハードウェアのモデルとコンフィギュレーション M680x0オプション VAXオプション SPARCオプション Convexオプション AMD29Kオプション ARMオプション Thumbオプション MN10200オプション MN10300オプション M32R
The GNU Source-Level Debugger Eighth Edition, for GDB version 5.0 March 2000 Richard Stallman, Roland Pesch, Stan Shebs, et.al. GDBの要約 フリー・ソフトウェア GDBに貢献した人々 GDBセッションのサンプル GDBの起動と終了 GDBの起動 ファイルの選択 モードの選択 GDBの終了 シェル・コマンド GDBコマンド コマンドの構文 コマンド名の補完 ヘルプの表示 GDB配下でのプログラムの実行 デバッグのためのコンパイル ユーザ・プログラムの起動 ユーザ・プログラムの引数 ユーザ・プログラムの環境 ユーザ・プログラムの作業ディレクトリ ユーザ・プログラムの入出力 既に実行中のプロセスのデバッグ 子プロセスの終了 マルチスレッド・プログラムのデバッグ マルチ
<BODY> このページを表示するには、フレームを表示できるブラウザが必要です。 </BODY>
The GNU Source-Level Debugger Seventh Edition, for GDB version 4.18 February 1999 Richard M. Stallman and Roland H. Pesch GDBの要約 フリー・ソフトウェア GDBに貢献した人々 GDBセッションのサンプル GDBの起動・終了 GDBの起動 ファイルの選択 モードの選択 GDBの終了 シェル・コマンド GDB コマンド コマンドの構文 コマンド名の補完 ヘルプの表示 GDB配下でのプログラムの実行 デバッグのためのコンパイル ユーザ・プログラムの起動 ユーザ・プログラムの引数 ユーザ・プログラムの環境 ユーザ・プログラムの作業ディレクトリ ユーザ・プログラムの入出力 既に実行中のプロセスのデバッグ 子プロセスの終了 プロセス情報 マルチスレッド・プログラムのデバッグ マ
[Contents] [Back] [Prev] [Up] [Next] [Forward] gcov: テスト・カバレッジ・プログラム gcovは、 GNU CCと組み合わせることによって、 プログラムのコード・カバレッジをテストすることができるツールです。 この章では、 gcovのバージョン1.5について説明します。 gcovの紹介 gcovは、 テスト・カバレッジ・プログラムです。 GNU CCとともに使用してプログラムの分析を行えば、 より効率的、 かつ、 より高速に動作するコードを生成することができます。 gcovは、 コードのどの部分に最適化を適用するのが最も効果的であるかを発見するのを支援してくれる、 プロファイリング・ツールとして使用することができます。 また、 gcovを、 別のプロファイリング・ツールであるgprofとともに使用して、 コードのどの部
このページを最初にブックマークしてみませんか?
『KI's Unofficial GNU Manual Translation Project』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く