Documentation Home
> Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ
Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ
Book Information
索引
数字・記号
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
あ
い
え
お
か
き
く
け
こ
さ
し
す
せ
そ
た
ち
つ
て
と
な
は
ひ
ふ
へ
ほ
ま
む
め
も
よ
ら
り
れ
ろ
はじめに
第 1 章 dbx の概要
デバッグを目的としてコードをコンパイルする
dbx または dbxtool を起動してプログラムを読み込む
プログラムを dbx で実行する
dbx を使用してプログラムをデバッグする
コアファイルをチェックする
ブレークポイントを設定する
プログラムをステップ実行する
呼び出しスタックを確認する
変数を調べる
メモリーアクセス問題とメモリーリークを検出する
dbx を終了する
dbx オンラインヘルプにアクセスする
第 2 章 dbx の起動
デバッグセッションを開始する
既存のコアファイルのデバッグ
同じオペレーティング環境でのコアファイルのデバッグ
コアファイルが切り捨てられている場合
一致しないコアファイルのデバッグ
共有ライブラリ問題の回避
ライブラリ問題を回避し、一致しないコアファイルを dbx でデバッグするには、次の手順を実行します。
注意点
プロセス ID の使用
dbx 起動時シーケンス
起動属性の設定
デバッグ時ディレクトリへのコンパイル時ディレクトリのマッピング
dbx 環境変数の設定
ユーザー自身の dbx コマンドを作成
デバッグのためのプログラムのコンパイル
-g オプションでコンパイル
別のデバッグファイルの使用
別のデバッグファイルの作成
最適化コードのデバッグ
パラメータと変数
インライン関数
-g オプションを使用しないでコンパイルされたコード
dbx を完全にサポートするために -g オプションを必要とする共有ライブラリ
完全にストリップされたプログラム
デバッグセッションを終了する
プロセス実行の停止
dbx からのプロセスの切り離し
セッションを終了せずにプログラムを終了する
デバッグ実行の保存と復元
save コマンドの使用
一連のデバッグ実行をチェックポイントとして保存する
保存された実行の復元
replay を使用した保存と復元
第 3 章 dbx のカスタマイズ
dbx 初期化ファイルの使用
.dbxrc ファイルの作成
初期化ファイル
dbx 環境変数の設定
dbx 環境変数および Korn シェル
第 4 章 コードの表示とコードへの移動
コードへの移動
ファイルの内容を表示する
関数を表示する
あいまいな関数名をリストから選択する (C++)
複数存在する場合の選択
ソースリストの出力
呼び出しスタックの操作によってコードを表示する
プログラム位置のタイプ
プログラムスコープ
現在のスコープを反映する変数
表示スコープ
表示スコープのコンポーネント
表示スコープの変更
スコープ決定演算子を使用してシンボルを特定する
逆引用符演算子
コロンを重ねたスコープ決定演算子 (C++)
ブロックローカル演算子
リンカー名
シンボルを検索する
シンボルの出現を出力する
実際に使用されるシンボルを決定する
スコープ決定検索パス
スコープ検索規則の緩和
変数、メンバー、型、クラスを調べる
変数、メンバー、関数の定義を調べる
型およびクラスの定義を調べる
オブジェクトファイルおよび実行可能ファイル内のデバッグ情報
オブジェクトファイルの読み込み
モジュールについてのデバッグ情報
モジュールのリスト
ソースファイルおよびオブジェクトファイルの検索
第 5 章 プログラムの実行制御
dbx でプログラムを実行する
動作中のプロセスに dbx を接続する
プロセスから dbx を切り離す
プログラムのステップ実行
シングルステップ
関数へのステップイン
プログラムを継続する
特定の行からプログラムの実行を再開する
関数を呼び出す
安全な呼び出し
Ctrl+C によってプロセスを停止する
第 6 章 ブレークポイントとトレースの設定
ブレークポイントを設定する
ソースコードの特定の行に stop ブレークポイントを設定する
関数に stop ブレークポイントを設定する
C++ プログラムに複数のブレークポイントを設定する
異なるクラスのメンバー関数にブレークポイントを設定する
クラスのすべてのメンバー関数にブレークポイントを設定する
非メンバー関数に複数のブレークポイントを設定する
オブジェクトにブレークポイントを設定する
データ変更ブレークポイントを設定する
特定アドレスへのアクセス時にプログラムを停止する
変数の変更時にプログラムを停止する
条件付きでプログラムを停止する
ブレークポイントのフィルタの設定
関数の戻り値をフィルタとして使用
局所変数にデータ変更ブレークポイントを設定する
条件付イベントでのフィルタの使用
トレースの実行
トレースを設定する
トレース速度を制御する
ファイルにトレース出力を転送する
ソース行で when ブレークポイントを設定する
動的にロードされたライブラリにブレークポイントを設定する
ブレークポイントをリストおよびクリアする
ブレークポイントとトレースポイントの表示
ハンドラ ID を使用して特定のブレークポイントを削除
ブレークポイントを有効および無効にする
イベント効率
第 7 章 呼び出しスタックの使用
スタック上での現在位置の検索
スタックを移動してホームに戻る
スタックを上下に移動する
スタックの上方向への移動
スタックの下方向への移動
特定フレームへの移動
呼び出しスタックのポップ
スタックフレームを隠す
スタックトレースを表示して確認する
第 8 章 データの評価と表示
変数と式の評価
実際に使用される変数を確認する
現在の関数のスコープ外にある変数
変数、式または識別子の値を出力する
C++ ポインタを出力する
C++ プログラムにおける無名引数を評価する
ポインタを間接参照する
式を監視する
表示を取り消す (非表示)
変数に値を代入する
配列を評価する
配列の断面化
C と C++ での配列の断面化の構文
Fortran のための配列断面化構文
断面を使用する
刻みを使用する
pretty-print の使用
第 9 章 実行時検査
概要
RTC を使用する場合
RTC の必要条件
実行時検査
メモリー使用状況とメモリーリーク検査を有効化
メモリーアクセス検査を有効化
すべての RTC を有効化
RTC を無効化
プログラムを実行
アクセス検査の使用
メモリーアクセスエラーの報告
メモリーアクセスエラー
メモリーリークの検査
メモリーリーク検査の使用
リークの可能性
リークの検査
メモリーリークの報告を理解する
リークレポートの生成
リークレポート
メモリーリークの修正
メモリー使用状況検査の使用
エラーの抑止
抑止のタイプ
スコープと種類による抑制
最新エラーの抑止
エラー報告回数の制限
エラー抑止の例
デフォルトの抑止
抑止によるエラーの制御
子プロセスにおける RTC の実行
接続されたプロセスへの RTC の使用
RTC での修正継続機能の使用
実行時検査アプリケーションプログラミングインタフェース
バッチモードでの RTC の使用
bcheck 構文
bcheck の例
dbx からバッチモードを直接有効化
トラブルシューティングのヒント
実行時検査の制限
より高い効果を得るにはより多くのシンボルおよびデバッグ情報が必要になる
x86 プラットフォームでは SIGSEGV シグナルと SIGALTSTACK シグナルが制限される
より高い効果を得るには、十分なパッチ領域を設け、すべての既存コードを含めて 8M バイト以内にする (SPARC プラットフォームのみ)
RTC エラー
アクセスエラー
不正解放 (baf) エラー
重複解放 (duf) エラー
境界整列を誤った解放 (maf) エラー
境界整列を誤った読み取り (mar) エラー
境界整列を誤った書き込み (maw) エラー
メモリー不足 (oom) エラー
配列範囲外からの読み込み (rob) エラー
非割り当てメモリーからの読み取り (rua) エラー
非初期化メモリーからの読み取り (rui) エラー
配列範囲外メモリーへの書き込み (wob) エラー
読み取り専用メモリーへの書き込み (wro) エラー
非割り当てメモリーへの書き込み (wua) エラー
メモリーリークエラー
ブロック中のアドレス (aib)
レジスタ中のアドレス (air)
メモリーリーク (mel) エラー
第 10 章 修正継続機能 (fix と cont)
修正継続機能の使用
fix と cont の働き
fix と cont によるソースの変更
プログラムの修正
ファイルを修正する
修正後の続行
実行された関数への変更
呼び出されていない関数への変更
現在実行中の関数への変更
現在スタック上にある関数への変更
修正後の変数の変更
ヘッダファイルの変更
C++ テンプレート定義の修正
第 11 章 マルチスレッドアプリケーションのデバッグ
マルチスレッドデバッグについて
スレッド情報
別のスレッドのコンテキストの表示
スレッドリストの表示
実行の再開
スレッド作成動作について
LWP 情報について
第 12 章 子プロセスのデバッグ
単純な接続の方法
exec 機能後のプロセス追跡
fork 機能後のプロセス追跡
イベントとの対話
第 13 章 OpenMP プログラムのデバッグ
コンパイラによる OpenMP コードの変換
OpenMP コードで利用可能な dbx の機能
並列領域へのシングルステップ
変数と式の出力
領域およびスレッド情報の出力
並列領域の実行の直列化
スタックトレースの使用
dump コマンドの使用
イベントの使用
同期イベント
そのほかのイベント
OpenMP コードの実行シーケンス
第 14 章 シグナルの処理
シグナルイベントについて
システムシグナルを捕獲する
デフォルトの catch リストと ignore リストを変更する
FPE シグナルをトラップする (Solaris プラットフォームのみ)
例外の発生場所の判定
例外処理の原因追求
プログラムにシグナルを送信する
シグナルの自動処理
第 15 章 dbx を使用してプログラムをデバッグする
C++ での dbx の使用
dbx での例外処理
例外処理コマンド
exception [-d | +d] コマンド
intercept [-all] [-x] [-set] [typename] コマンド
unintercept [-all] [-x] [typename] コマンド
whocatches typename コマンド
例外処理の例
C++ テンプレートでのデバッグ
テンプレートの例
C++ テンプレートのコマンド
whereis name コマンド
whatis name コマンド
stop inclass classname コマンド
stop infunction name コマンド
stop in function コマンド
call function_name( parameters) コマンド
print コマンド
list コマンド
第 16 章 dbx を使用した Fortran のデバッグ
Fortran のデバッグ
カレントプロシージャとカレントファイル
大文字
dbx のサンプルセッション
dbx のサンプルセッションの実行
セグメント不正のデバッグ
dbx により問題を見つける方法
例外の検出
呼び出しのトレース
配列の操作
Fortran 95 割り当て可能配列
組み込み関数
複合式
間隔式の表示
論理演算子
Fortran 95 構造型の表示
Fortran 95 構造型へのポインタ
第 17 章 dbx による Java アプリケーションのデバッグ
dbx と Java コード
Java コードに対する dbx の機能
Java コードのデバッグにおける dbx の制限事項
Java デバッグ用の環境変数
Java アプリケーションのデバッグの開始
クラスファイルのデバッグ
JAR ファイルのデバッグ
ラッパーを持つ Java アプリケーションのデバッグ
動作中の Java アプリケーションへの dbx の接続
Java アプリケーションを埋め込む C/C++ アプリケーションのデバッグ
JVM ソフトウェアへの引数の引き渡し
Java ソースファイルの格納場所の指定
C/C++ ソースファイルの格納場所の指定
独自のクラスローダーを使用するクラスファイルのパスの指定
Java メソッドにブレークポイントを設定する
ネイティブ (JNI) コードでブレークポイントを設定する
JVM ソフトウェアの起動方法のカスタマイズ
JVM ソフトウェアのパス名の指定
JVM ソフトウェアへの実行引数の引き渡し
Java アプリケーション用の独自のラッパーの指定
コマンド行オプションを受け付ける独自のラッパーの利用
コマンド行オプションを受け付けない独自のラッパーの利用
64 ビット JVM ソフトウェアの指定
dbx の Java コードデバッグモード
Java または JNI モードからネイティブモードへの切り替え
実行中断時のモードの切り替え
Java モードにおける dbx コマンドの使用法
dbx コマンドにおける Java の式の評価
dbx コマンドが利用する静的および動的情報
構文と機能が Java モードとネイティブモードで完全に同じコマンド
Java モードで構文が異なる dbx コマンド
Java モードでのみ有効なコマンド
第 18 章 機械命令レベルでのデバッグ
メモリーの内容を調べる
examine または x コマンドの使用
アドレスを使用する
書式を使用する
カウントを使用する
アドレスの使用例
dis コマンドの使用
listi コマンドの使用
機械命令レベルでのステップ実行とトレース
機械命令レベルでステップ実行する
機械命令レベルでトレースする
機械命令レベルでブレークポイントを設定する
あるアドレスにブレークポイントを設定する
regs コマンドの使用
プラットフォーム固有のレジスタ
SPARC レジスタ情報
x86 レジスタ情報
AMD64 レジスタ情報
第 19 章 dbx の Korn シェル機能
実装されていない ksh-88 の機能
ksh-88 から拡張された機能
名前が変更されたコマンド
編集機能のキーバインドの変更
第 20 章 共有ライブラリのデバッグ
動的リンカー
リンクマップ
起動手順と .init セクション
プロシージャリンケージテーブル
修正と継続
共有ライブラリにおけるブレークポイントの設定
明示的に読み込まれたライブラリにブレークポイントを設定する
付録 A プログラム状態の変更
dbx 下でプログラムを実行することの影響
プログラムの状態を変更するコマンドの使用
assign コマンド
pop コマンド
call コマンド
print コマンド
when コマンド
fix コマンド
cont at コマンド
付録 B イベント管理
イベントハンドラ
イベントの安全性
イベントハンドラの作成
イベントハンドラを操作するコマンド
イベントカウンタ
イベント指定の設定
ブレークポイントイベント仕様
in function
at [filename: ]line_number
at address_expression
infile filename
infunction function
inmember function inmethod function
inclass classname [-recurse | -norecurse]
inobject object-expression [-recurse | -norecurse]
データ変更イベント指定
access mode address-expression [, byte-size-expression ]
change variable
cond condition-expression
システムイベント指定
dlopen [ lib-path ] dlclose [ lib-path ]
fault fault
lwp_exit
sig signal
sig signal sub-code
sysin code | name
sysout code | name
sysin | sysout
実行進行状況イベント仕様
exit exitcode
next
returns
returns function
step
その他のイベント仕様
attach
detach
lastrites
proc_gone
prog_new
stop
sync
syncrtld
thr_create [thread_id]
thr_exit
throw
throw type
throw -unhandled
throw -unexpected
timer seconds
イベント指定のための修飾子
-if condition
-resumeone
-in function
-disable
-count n -count infinity
-temp
-instr
-thread thread_id
-lwp lwp_id
-hidden
-perm
解析とあいまいさに関する注意
事前定義済み変数
when コマンドに対して有効な変数
$handlerid
when コマンドと特定のイベントに対して有効な変数
イベントハンドラの例
配列メンバーへのストアに対するブレークポイントを設定する
単純なトレースを実行する
関数の中だけハンドラを有効にする (in function)
実行された行の数を調べる
実行された命令の数をソース行で調べる
イベント発生後にブレークポイントを有効にする
replay 時にアプリケーションファイルをリセットする
プログラムの状態を調べる
浮動小数点例外を捕捉する
付録 C コマンドリファレンス
assign コマンド
ネイティブモードの構文
Java モードの構文
attach コマンド
構文
実行中の Java プロセスに接続する
bsearch コマンド
構文
call コマンド
ネイティブモードの構文
Java モードの構文
cancel コマンド
構文
catch コマンド
構文
check コマンド
構文
clear コマンド
構文
collector コマンド
構文
collector archive コマンド
構文
collector dbxsample コマンド
構文
collector disable コマンド
構文
collector enable コマンド
構文
collector heaptrace コマンド
構文
collector hwprofile コマンド
構文
collector limit コマンド
構文
collector mpitrace コマンド
構文
collector pause コマンド
構文
collector profile コマンド
構文
collector resume コマンド
構文
collector sample コマンド
構文
collector show コマンド
構文
collector status コマンド
構文
collector store コマンド
構文
collector synctrace コマンド
構文
collector tha コマンド
構文
collector version コマンド
構文
cont コマンド
構文
dalias コマンド
構文
dbx コマンド
ネイティブモードの構文
Java モードの構文
オプション
dbxenv コマンド
構文
debug コマンド
ネイティブモードの構文
Java モードの構文
オプション
delete コマンド
構文
detach コマンド
ネイティブモードの構文
Java モードの構文
dis コマンド
構文
オプション
display コマンド
ネイティブモードの構文
Java モードの構文
down コマンド
構文
dump コマンド
構文
edit コマンド
構文
examine コマンド
構文
exception コマンド
構文
exists コマンド
構文
file コマンド
構文
files コマンド
ネイティブモードの構文
Java モードの構文
fix コマンド
構文
fixed コマンド
構文
fortran_module コマンド
構文
frame コマンド
構文
func コマンド
ネイティブモードの構文
Java モードの構文
funcs コマンド
構文
gdb コマンド
構文
handler コマンド
構文
hide コマンド
構文
ignore コマンド
構文
import コマンド
構文
intercept コマンド
構文
java コマンド
構文
jclasses コマンド
構文
joff コマンド
構文
jon コマンド
構文
jpkgs コマンド
構文
kill コマンド
構文
language コマンド
構文
line コマンド
構文
例
list コマンド
構文
オプション
例
listi コマンド
loadobject コマンド
構文
loadobject -dumpelf コマンド
構文
loadobject -exclude コマンド
構文
loadobject -hide コマンド
構文
loadobject -list コマンド
構文
loadobject -load コマンド
構文
loadobject -unload コマンド
構文
loadobject -use コマンド
構文
lwp コマンド
構文
lwps コマンド
構文
mmapfile コマンド
構文
例
module コマンド
構文
modules コマンド
構文
native コマンド
構文
next コマンド
ネイティブモードの構文
Java モードの構文
nexti コマンド
構文
omp_loop コマンド
構文
omp_pr コマンド
構文
omp_serialize コマンド
構文
omp_team コマンド
構文
omp_tr コマンド
構文
pathmap コマンド
構文
例
pop コマンド
構文
print コマンド
ネイティブモードの構文
Java モードの構文
proc コマンド
構文
prog コマンド
構文
quit コマンド
構文
regs コマンド
構文
例 (SPARC プラットフォーム)
replay コマンド
構文
rerun コマンド
構文
restore コマンド
構文
rprint コマンド
構文
rtc showmap コマンド
構文
rtc skippatch コマンド
構文
run コマンド
ネイティブモードの構文
Java モードの構文
runargs コマンド
構文
save コマンド
構文
scopes コマンド
構文
search コマンド
構文
showblock コマンド
構文
showleaks コマンド
構文
showmemuse コマンド
構文
source コマンド
構文
status コマンド
構文
例
step コマンド
ネイティブモードの構文
Java モードの構文
stepi コマンド
構文
stop コマンド
構文
ネイティブモードの構文
Java モードの構文
stopi コマンド
構文
suppress コマンド
構文
sync コマンド
構文
syncs コマンド
構文
thread コマンド
ネイティブモードの構文
Java モードの構文
threads コマンド
ネイティブモードの構文
Java モードの構文
trace コマンド
構文
ネイティブモードの構文
Java モードの構文
tracei コマンド
構文
uncheck コマンド
構文
undisplay コマンド
ネイティブモードの構文
Java モードの構文
unhide コマンド
構文
unintercept コマンド
構文
unsuppress コマンド
構文
unwatch コマンド
構文
up コマンド
構文
use コマンド
watch コマンド
構文
whatis コマンド
ネイティブモードの構文
Java モードの構文
when コマンド
構文
ネイティブモードの構文
Java モードの構文
wheni コマンド
構文
where コマンド
ネイティブモードの構文
Java モードの構文
whereami コマンド
構文
whereis コマンド
構文
which コマンド
構文
whocatches コマンド
構文
© 2010, Oracle Corporation and/or its affiliates