Documentation Home
> dbx コマンドによるデバッグ
dbx コマンドによるデバッグ
Book Information
はじめに
第 1 章 dbx の起動
基本概念
デバッグセッションを開始する
dbx 起動シーケンス
コアファイルが存在する場合
プロセス ID
起動属性の設定
pathmap
dbxenv
alias
最適化コードのデバッグ
-g オプションによるコンパイル
C++ サポートと -g0 オプション
-g オプションを使用しないでコンパイルされたコード
dbx を完全にサポートするために -g オプションを必要とする共有ライブラリ
完全にストリップされたプログラム
デバッグセッションを終了する
実行の停止
dbx からのプロセスの切り離し
セッションを終了せずにプログラムを終了する
デバッグ実行の保存と復元
save
一連のデバッグ実行をチェックポイントとして保存する
保存された実行の復元
保存された実行の正確な復元に必要な条件
replay を使用した保存と復元
コマンド参照
構文
起動オプション
第 2 章 dbx のカスタマイズ
.dbxrc ファイルの使用
初期化ファイルの例
コマンド参照
第 3 章 コードの表示
コード位置へのマッピング
停止位置とは別の部分のコードを表示する
ファイルの内容を表示する
関数を表示する
あいまいな関数名をリストから選択する (C++)
複数存在する場合の選択
ソースリストの出力
呼び出しスタックの操作によってコードを表示する
スコープ決定演算子を使用してシンボルを修飾する
逆引用符演算子
コロンを重ねたスコープ決定演算子 (C++)
ブロックローカル演算子
リンカー名
スコープ決定パス
シンボルを検索する
シンボルの出現を出力する
実際に使用されるシンボルを調べる
変数、メンバー、型、クラスを調べる
型およびクラスの定義を調べる
自動読み取り機能の使用
.o ファイルが存在しない場合のデバッグ
モジュールのリスト
コマンド参照
modules
whatis
list
第 4 章 プログラムの実行制御
dbx でプログラムを実行する
動作中のプロセスに dbx を接続する
プロセスから dbx を切り離す
プログラムの実行
関数を呼び出す
プログラムを継続する
Control+C によってプロセスを停止する
コマンド参照
run
rerun
next
cont
step
debug
detach
第 5 章 ブレークポイントとトレースの設定
概要
ブレークポイントを設定する
ソースコードの特定の行に stop ブレークポイントを設定する
特定の行に when タイプのブレークポイントを設定する
動的にリンクされたライブラリにブレークポイントを設定する
C++ プログラムに複数のブレークポイントを設定する
異なるクラスのメンバー関数にブレークポイントを設定する
同じクラスのメンバー関数にブレークポイントを設定する
非メンバー関数に複数のブレークポイントを設定する
オブジェクトにブレークポイントを設定する
コードをトレースする
トレースを設定する
トレース速度を制御する
イベントハンドラのリストの表示とクリア
ブレークポイントとトレースポイントの表示
ステータス ID 番号を使用して特定のブレークポイントを削除
ウォッチポイント
アドレスの内容に書き込みが行われたときに実行を停止する
指定した変数の値が変化したときに実行を停止する
指定した条件が発生した場合に実行を停止する
高速 modify イベント
ブレークポイントフィルタを設定する
イベント効率
第 6 章 イベント管理
概要
イベントハンドラの作成
when
stop
trace
イベントハンドラを操作するコマンド
イベントカウンタ
イベント指定の設定
イベント仕様
in func
at lineno
infunction func
inmember func / inmethod func
inclass classname
inobject obj-expr
change variable
cond cond-expr
returns
returns func
step
next
timer seconds
sig sig
sig sig sub-code
fault fault
access mode addr-exp, [byte-size-exp]
access の制限事項
modify addr-exp [ , byte-size ]
modify の制限事項
sysin code|name
sysout code|name
sysin|sysout
prog_new
stop
sync
syncrtld
attach
detach
lwp_exit
proc_gone
lastrites
dlopen [ lib-path ]|dlclose [ lib-path ]
イベント指定のための修飾子
-if cond
-in func
-disable
-count n / -count infinity
-temp
-instr
-thread tid
-lwp lid
-hidden
-perm
解析とあいまいさに関する注意
事前定義済み変数
イベント固有の変数
$handlerid
$booting
イベント別の有効変数
sig イベントに固有の変数
exit イベントに固有の変数
dlopen イベントと dlclose イベントに固有の変数 (パラメータが与えられた場合のみ)
sysin イベントと sysout イベントに固有の変数
proc_gone イベントに固有の変数
使用例
配列メンバーへの書き込みに対するウォッチポイントを設定する
単純なトレース
関数の中だけイベントを有効にする (in func)
実行された行の数を調べる
実行された命令の数をソース行で調べる
イベント発生後にブレークポイントを有効にする
dlopen オブジェクトに対する自動ブレークポイントを設定する
replay 時にアプリケーションファイルをリセットする
プログラムの状態を調べる
浮動小数点例外を捕捉する
コマンド参照
when
stop
step
cancel
status
delete
clear
handler
第 7 章 呼び出しスタックの検査
スタック上での現在位置の検索
スタックを移動してホームに戻る
スタックを上下に移動する
特定フレームへの移動
コマンド参照
where
hide/unhide
第 8 章 データの評価と表示
変数と式の評価
実際に使用される変数を確認する
現在の関数のスコープ外にある変数
C++ での表示
C++ プログラムにおける無名引数を評価する
ポインタを間接参照する
式を監視する
表示を取り消す (非表示)
式に値を代入する
配列を評価する
配列の断面化
配列の断面化と刻みのための構文
配列の断面
刻み幅
簡易構文
コマンド参照
print
第 9 章 実行時検査
概要
RTC を使用する場合
必要条件
制限事項
RTC の使用
メモリーアクセスエラーの検出 (SPARC のみ)
メモリーアクセスエラーの報告
メモリーアクセスエラー
メモリーリークの検査
メモリーリーク検査の使用
リークの可能性
リークの検査
メモリーリークの報告を理解する
リークレポートの生成
リークレポート
メモリーリークの修正
メモリー使用状況検査の使用
エラーの抑止
デフォルトの抑止
抑止によるエラーの制御
子プロセスでの RTC の使用
接続されたプロセスへの RTC の使用
RTC での修正継続機能の使用
実行時検査アプリケーションプログラミングインタフェース
バッチモードでの RTC の使用
トラブルシューティングのヒント
RTC の 8M バイト制限
8Mバイトの制限にぶつかった場合
ケース 1
ケース 2
ケース 2a
rtc_patch_area
例:
コマンド参照
check|uncheck
showblock
showleaks
showmemuse
suppress|unsuppress
エラータイプの位置指定子
RTC エラー
ブロック中のアドレス (aib)
レジスタ中のアドレス (air)
不正解放 (baf)
重複解放 (duf)
境界整列を誤った解放 (maf)
境界整列を誤った読み取り (mar)
境界整列を誤った書き込み (maw)
メモリーリーク (mel)
メモリー不足 (oom)
非割り当てメモリーからの読み取り (rua)
非初期化メモリーからの読み取り (rui)
読み取り専用メモリーへの書き込み (wro)
非割り当てメモリーへの書き込み (wua)
dbxenv 変数
dbxenv rtc_auto_continue {on | off}
dbxenv rtc_auto_suppress {on | off}
dbxenv rtc_biu_at_exit {on | off | verbose}
dbxenv rtc_error_log_file_name {filename}
dbxenv rtc_error_limit n
dbxenv rtc_mel_at_exit {on|off|verbose}
第 10 章 データの視覚化
適切な配列式の指定
配列のグラフ化
配列表示の自動更新
表示の変更
視覚化されたデータの分析
シナリオ 1: 同じデータを違う視点で表示させて比較する
シナリオ 2: データのグラフを自動的に更新する
シナリオ 3: プログラムの異なる箇所のデータグラフを比較する
シナリオ 4: 同じプログラムを別々に実行した結果のデータグラフを比較する
Fortran のサンプルプログラム
C のサンプルプログラム
第 11 章 修正継続機能 (fix と continue)
基本概念
fix と continue の働き
fix と continue によるソースの変更
制限事項
プログラムの修正
修正後の続行
実行された関数への変更
呼び出されていない関数への変更
現在実行中の関数への変更
現在スタック上にある関数への変更
修正後の変数の変更
コマンド参照
第 12 章 マルチスレッドアプリケーションのデバッグ
マルチスレッドデバッグについて
スレッド情報
別のスレッドのコンテキストの表示
スレッドリストの表示
実行の再開
LWP 情報について
コマンド参照
thread
threads
スレッドと LWP の状態
第 13 章 子プロセスのデバッグ
単純な接続の方法
exec 後のプロセス追跡
fork 後のプロセス追跡
イベントとの対話
第 14 章 シグナルの処理
シグナルイベントについて
システムシグナルを捕捉する
デフォルトの catch リストと ignore リストを変更する
FPE シグナルをトラップする
プログラム内でシグナルを送信する
シグナルの自動処理
第 15 章 データの収集
サンプリングコレクタの使用
プロファイル
マルチスレッドアプリケーションについてのデータの収集
コマンド参照
第 16 章 C++ のデバッグ
C++ での dbx の使用
dbx での例外処理
例外処理コマンド
exception [-d|+d]
intercept [-a|-x|typename]
unintercept [-a|-x |typename]
whocatches typename
例外処理の例
C++ テンプレートでのデバッグ
テンプレートの例
コマンド参照
C++ テンプレートのコマンド
whereis name
whatis name
stop inclass classname
stop in function
call function_name (parameters)
print Expressions
list Expressions
第 17 章 dbx を使用した Fortran のデバッグ
Fortran のデバッグ
カレントプロシージャとカレントファイル
大文字 (FORTRAN 77 の場合のみ)
最適化プログラム
dbx のサンプルセッション
セグメント不正のデバッグ
dbx により問題を見つける方法
例外の検出
呼び出しのトレース
配列の操作
Fortran 90 割り当て可能配列
配列のスライス
組み込み関数
複合式
論理演算子
Fortran 90 構造型の表示
Fortran 90 構造型へのポインタ
第 18 章 機械命令レベルでのデバッグ
メモリーの内容を調べる
examine または x コマンドの使用
アドレス
書式
count
例
dis コマンドの使用
listi コマンドの使用
機械命令レベルでのステップ実行とトレース
機械命令レベルでステップ実行する
機械命令レベルでトレースする
機械命令レベルでブレークポイントを設定する
あるアドレスにブレークポイントを設定する
adb コマンド
regs コマンドの使用
プラットフォーム固有のレジスタ
SPARC レジスタ情報
x86 レジスタ情報
第 19 章 dbx の Korn シェル機能
実装されていない ksh-88 の機能
ksh-88 から拡張された機能
名前が変更されたコマンド
第 20 章 dbx と動的リンカー
概要
共有オブジェクトのデバッグ
起動手順
起動手順と .init セクション
dlopen() と dlclose()
修正継続機能 (fix と continue)
プロシージャ・リンケージ・テーブル (PLT)
動的にリンクされたライブラリにブレークポイントを設定する
3 つの例外
付録 A プログラム状態の変更
注意すべき動作と影響
コマンドの使用
assign
pop
call
print
when
fix
cont at
付録 B インクリメンタルリンクエディタ (ild)
はじめに
インクリメンタルリンクの概要
ild の使用方法
ild の動作
ild の制限事項
完全再リンクの要因
ild のリンク委嘱メッセージ
ild の再リンクメッセージ
例 1: 内部空領域が使い果たされた場合
例 2: strip を実行した場合
例 3: ild バージョンが異なる場合
例 4: 変更ファイルが多すぎる場合
例 5: 前のリンクが完全再リンクだった場合
例 6: 新しい作業ディレクトリを使用する場合
オプション
コンパイルシステムで受け入れられるオプション
コンパイルシステムから ild に渡されるオプション
環境変数
注意事項
ild でサポートされていない ld オプション
ild で使用されるファイル
付録 C ユーザーへのアドバイス
一般的な GDB コマンドに対する dbx の同等機能の使用
dbx の変更の検査
.dbxinit ファイルの使用
別名の定義
シンボル / および ?
組み込みスラッシュコマンド
set の代わりに assign を使用する
コマンド行編集を有効にする
スコープに入れる
ファイルの検索
ブレークポイントへの到達
C++ メンバーと whatis コマンド
実行時検査の 8 Mバイト制限
dbx を使用した浮動小数点例外の検索
マルチスレッドプログラムでの dbx の使用
スレッド番号
LWP 番号
特定スレッドのブレークポイント
dbx によるマルチスレッドアプリケーションの識別
コレクタ、RTC、fix と continue、およびウォッチポイント
マルチスレッドの注意点
スリープ中のスレッド
thr_join、thr_create()、および thr_exit
© 2010, Oracle Corporation and/or its affiliates