Oracle® Solaris Studio 12.4: dbxtool チュートリアル

印刷ビューの終了

更新: 2014 年 10 月
 
 

高度なブレークポイント技術の使用法

    このセクションでは、ブレークポイントを使用するためのいくつかの高度な技術について説明します。

  • ブレークポイントカウントの使用法

  • 境界ブレークポイントの使用法

  • 役立つブレークポイントカウントのピッキング

  • ウォッチポイント

  • ブレークポイント条件の使用法

  • ポップを使用したマイクロ再実行

  • 修正と継続機能の使用法

このセクション、およびプログラム例は、ここで紹介する手順とほぼ同じものを使用して dbx で実際に検出されたバグを基にしています。


注 -  このセクションに示した正確な出力を得るには、プログラム例にまだバグが含まれている必要があります。バグを修正した場合は、http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/solaris-studio-samples-1408618.html から SolarisStudioSampleApplications ディレクトリを再ダウンロードしてください。

ソースコードには in というサンプル入力ファイルが含まれており、これを使用してプログラム例でバグを発生させます。in には次のコードが含まれています。

display nonexistent_var	# should yield an error
display var
stop in X	# will cause one "stopped" message and display
stop in Y	# will cause second "stopped" message and display
run
cont
cont
run
cont
cont

この入力ファイルでプログラムを実行すると、出力は次のようになります。

$ a.out < in
> display nonexistent_var 
error: Don't know about 'nonexistent_var'
> display var 
will display 'var'
> stop in X 
> stop in Y 
> run 
running ...
stopped in X
var = {
      a = '100'
      b = '101
      c = '<error>'
      d = '102
      e = '103'
      f = '104'
      }
> cont 
stopped in Y
var = {
      a = '105'
      b = '106'
      c = '<error>'
      d = '107'
      e = '108'
      f = '109'
      }
> cont 
exited
> run 
running ...
stopped in X
var = {
      a = '110'
      b = '111'

      c = '<error>'
      d = '112'
      e = '113'
      f = '114'
      }
> cont 
stopped in Y
var = {
      a = '115'
      b = '116'

      c = '<error>'
      d = '117'
      e = '118'
      f = '119'
      }
> cont 
exited
> quit
Goodby

この出力を見て量が多いと思われるかもしれませんが、この例では、プログラムが長大で複雑なためコードをステップスルーまたは追跡することが困難な場合に使用する技術を解説することを主眼としています。

c フィールドの値を表示する箇所で、値が <error> になっていることに注目してください。フィールドに不正なアドレスが含まれていると、このような状況が発生することがあります。