Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

Proceduredbx のサンプルセッションの実行

  1. -g オプションでコンパイルとリンクをします。

    この処理は、まとめて 1 回または 2 回に分けて実行することができます。

    -g フラグ付きコンパイルとリンクを 1 度にまとめて行います。


     demo% f95 -o my_program -g a1.f a2.f a3.f
    

    コンパイルとリンクを分けて行います。


     demo% f95 -c -g a1.f a2.f a3.f
     demo% f95 -o my_program a1.o a2.o a3.o
    
  2. 実行可能ファイル my_program について dbx を起動します。


     demo% dbx my_program
     Reading symbolic information…
  3. stop in subnam と入力して、簡単なブレークポイントを設定します。subnam は、サブルーチン、関数、ブロックデータサブプログラムを示します。

    main プログラム中の最初の実行可能文で停止します。


     (dbx) stop in MAIN
     (2) stop in MAIN

    通常 MAIN は大文字ですが、subnam は大文字でも小文字でもかまいません。

  4. run コマンドを入力して、dbx からプログラムを実行します。dbx の起動時に指定された実行可能ファイルの中で、プログラムが実行されます。


     (dbx) run
     Running: my_program
     stopped in MAIN at line 3 in file "a1.f"
         3         call mkidentity( twobytwo, n )

    ブレークポイントに到達すると、dbx はどこで停止したかを示すメッセージを表示します。前述の例では、a1.f ファイルの行番号 3 で停止しています。

  5. print コマンドを使用して、値を出力します。

    n の値を出力します。


     (dbx) print n
     n = 2

    マトリックス twobytwo を出力します。


     (dbx) print twobytwo
     twobytwo =
        (1,1)       -1.0
        (2,1)       -1.0
        (1,2)       -1.0
        (2,2)       -1.0

    マトリックス array を出力します。


    (dbx) print array
    dbx: "array" is not defined in the current scope
    (dbx)

    ここで array は定義されていないため、出力は失敗します (mkidentity 内でのみ有効)。

  6. next コマンドを使用して、次の行に実行を進めます。

    次の行に実行を進めます。


    (dbx) next
    stopped in MAIN at line 4 in file "a1.f"
        4             print *, determinant( twobytwo )
    (dbx) print twobytwo
    twobytwo =
        (1,1)       1.0
        (2,1)       0.0
        (1,2)       0.0
        (2,2)       1.0
    (dbx) quit
    demo%

    next コマンドは現在のソース行を実行し、次のソース行で停止します。これは副プログラムの呼び出しを 1 つの文として数えます。

    next コマンドと step コマンドを比較します。step コマンドは、ソースの次の行または副プログラムの次のステップを実行します。通常、次の実行可能ソース文がサブルーチンまたは関数呼び出しの場合、各コマンドは次の処理を行います。

    • step コマンドは、副プログラムのソースの最初の文にブレークポイントを設定します。

    • next コマンドは、呼び出し元のプログラム中で、呼び出しのあとの最初の文にブレークポイントを設定します。

  7. quit コマンドを入力して、dbx を終了します。


    (dbx)quit        
    demo%