ようこそゲストさん

CPA-LABテクニカル

2008/01/22(火) Zend Studioでのデバックトレース

はてブ情報 はてブに登録 はてブ数 php5spok
ステップ実行に感激したものの、ステップオーバー、ステップイントゥ、ステップアウトの意味がよくわからない。調べると以下のよう。

  • ステップイントゥ:とにかく1つずつ実行。他の関数が呼び出されたら、当然、そちらに移る。細かいが時間がかかる。
  • ステップアウト:その関数のreturnまで一気に実行して、呼び出しもとに戻る。ステップイントゥでスしょうもない関数にまで入り込んでしまったら、これを使うと元の関数に戻れる。
  • テップオーバー:1つづ実行するが、他の関数が呼び出された場合には、そちらには一気に実行する。つまり呼び出した関数のステップ実行はしない。
(以下、参考)

PHP開発環境としての「ZendStudio2.5」について
http://www.nasbi.co.jp/report/php_01.htm
ステップオーバー:コール関数内を表示せず、次の行を実行する 
ステップイントゥ:コール関数内の残りの作業を行い、コールされた次に行に移動する 
ステップアウト:コール関数を表示し、1行単位のステップを実行する 
参考


VC++の使い方 > チュートリアル > デバッグ入門 > デバッガを使ってみよう
http://www.nitoyon.com/vc/tutorial/debug/debugger.htm
それでは、ステップ実行について解説します。ステップ実行には『ステップイン(F11)』 『ステップオーバー(F10)』 『ステップアウト(Shift + F11)』の3種類があります。言葉だけを見ても、何のことだかちょっと分かりにくいですよね…。 

ステップインとステップオーバーはプログラム内の命令を1つずつ実行していきます。両者は命令の中に関数呼び出しが含まれているときに動作が異なります。ステップインは関数が呼び出されているとき、その関数の内部の命令を1つずつ実行します。ステップオーバーは、関数呼び出しを実行したあとに、呼び出し部分の次の命令直前で停止します。 

ステップアウトは、現在呼び出されている関数をreturnが呼ばれるまで実行して、関数の呼び出し側に戻って停止します。 

では、それぞれをどのように使い分ければよいでしょう。 

基本的にはステップインだけで事足りるでしょう。しかし、呼び出す関数の中に明らかにバグがない場合や、printfなどのライブラリ関数を呼び出している箇所ではステップオーバーを使うと良いでしょう。また、現在ステップ実行中の関数の中には明らかに問題がない場合は、ステップアウトを実行して呼び出しがわに戻ると、ステップインを連打して関数を抜ける手間が省けます。 

名前:  非公開コメント   

  • TB-URL  http://cpa-lab.com/tech/022/tb/