デバッグ対象プログラムのデバッグ処理をコンピューターに実行させる前記コンピューター読み取り可能なデバッガプログラムにおいて、前記デバッグ処理は、前記デバッグ対象プログラムの有するデバッグ対象サブルーチン内で当該デバッグ対象プログラムが一時停止した状態で、停止以降に実行される当該デバッグ対象サブルーチン内の下位サブルーチン呼び出し命令文の指定に応答して、前記一時停止時のメモリ情報及びプログラムカウンタ値を含むプログラム実行状態を退避し、前記下位サブルーチンを実行しその実行結果情報を表示画面に出力すると共に、前記退避したプログラム実行状態を復帰させるサブルーチン事前実行工程を、有するデバッガプログラム。請求項1において、前記デバッグ処理は、前記サブルーチン事前実行工程の後、前記復帰したプログラム実行状態から前記デバッグ対象プログラムの実行を再開する再開工程を有するデバッガプログラム。請求項1または2において、前記実行結果情報は、前記下位サブルーチンの実行結果を示す戻り値を有するデバッガプログラム。請求項1乃至3のいずれかにおいて、前記デバッグ処理は、前記コンピューターの前記表示画面に出力された前記命令文上にポインタを移動させた時に前記命令文の指定を検出するデバッガプログラム。デバッグ対象プログラムの有するデバッグ対象サブルーチン内で当該デバッグ対象プログラムが一時停止した状態で、停止以降に実行される当該デバッグ対象サブルーチン内の下位サブルーチン呼び出し命令文の指定に応答して、前記一時停止時のメモリ情報及びプログラムカウンタ値を含むプログラム実行状態を退避し、前記下位サブルーチン呼び出し命令文を実行しその実行結果情報を表示画面に出力すると共に、前記退避したプログラム実行状態を復帰させるサブルーチン事前実行工程を、前記デバッグ対象サブルーチン内の全ての前記下位サブルーチン呼び出し命令文について、前記実行結果情報がエラーを示すエラー下位サブルーチン呼び出し命令文が検出されるまで繰り返すエラー下位サブルーチン検出工程を有し、前記エラー下位サブルーチンを前記デバッグ対象サブルーチンとして実行する前記エラー下位サブルーチン検出工程を、前記エラー下位サブルーチンが最下層のサブルーチンになるまで繰り返すデバッグ方法。しかしながら、ユーザーは、不具合を有する最下層のサブルーチンを特定していく工程において、デバッガ上で、デバッグ対象プログラムを何度も初めから実行し直す必要がある。その理由は、サブルーチン実行後のエラー処理の命令文でブレークした時点で、次にブレークポイントを設定する対象である命令文、即ち、当該エラーが発生したサブルーチン内で呼び出される下位のサブルーチン実行後のエラー処理の命令文は、既に実行された後であるためである。デバッガはデバッグ対象プログラムを遡って実行させることができない。そのため、ユーザーは、デバッガ上で、一旦、デバッグ対象プログラムを終了しメモリクリア等、初期化させた上で、ブレークポイントを下位のサブルーチン実行後のエラー処理の命令文に設定し直し、デバッグ対象プログラムを初めの命令文から再実行させていた。これは、デバッグ操作を煩雑にする上に、デバッグ対象プログラムの実行にテスト環境の準備や画面操作が伴う場合、デバッグ処理に要する工数を増大させる。このため、不具合を有する最下層のサブルーチンの階層が深い場合、デバッグ対象プログラムを何度も初めから実行し直す必要があり、デバッグ処理に膨大な工数を要していた。そこで、本発明は、不具合を有する最下層のサブルーチンを効率的に特定するデバッガプログラム及びデバッグ方法を提供する。第1の側面は、デバッグ対象プログラムのデバッグ処理をコンピューターに実行させる前記コンピューター読み取り可能なデバッガプログラムにおいて、前記デバッグ処理は、前記デバッグ対象プログラムの有するデバッグ対象サブルーチン内で当該デバッグ対象プログラムが一時停止した状態で、停止以降に実行される当該デバッグ対象サブルーチン内の下位サブルーチン呼び出し命令文の指定に応答して、前記一時停止時のメモリ情報及びプログラムカウンタ値を含むプログラム実行状態を退避し、前記下位サブルーチンを実行しその実行結果情報を表示画面に出力すると共に、前記退避したプログラム実行状態を復帰させるサブルーチン事前実行工程を、有する。第1の側面によれば、不具合を有する最下層のサブルーチンの特定を効率的にする。以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。図1は、本実施の形態例におけるデバッガシステムの構成の一例を表す図である。同図において、デバッガシステムは、例えば、デバッグ機能を備えるデバッガアプリケーションプログラム21を有するコンピューター10と、当該コンピューター10に接続されデバッグの対象のプログラム以下、デバッグ対象プログラム60が動作するコンピューター50と、を有する。デバッグ対象プログラム60が動作するコンピューター50は、プロセッサ52、デバッグ対象プログラム60が格納されたメモリ53、外部インターフェイス51を有する。プロセッサ52はコンピューター50全体を制御し、外部インターフェイス51はコンピューター10との通信処理を制御する。デバッグ対象プログラム60はプロセッサ52と協働することによって、当該デバッグ対象プログラム60の機能を実現する。一方、デバッガアプリケーションプログラム21を有するコンピューター10は、例えば、外部インターフェイス11、プロセッサ12、操作手段13、表示手段14、メモリ15を有する。また、メモリ15はデバッガアプリケーションプログラム21を有する。外部インターフェイス11はコンピューター50との通信処理を行い、操作手段13はユーザーからのデバッガアプリケーションプログラム以下、デバッガ21への操作指示を受け付ける。また、表示手段14は、デバッガ21上で実行中のソースコードや、変数等のメモリ情報を表示する。プロセッサ12は、コンピューター10全体の制御を行う。デバッガ21は、コンピューター10と協働することによって、本実施の形態例におけるデバッガ機能を実現する。図2は図1のデバッガ21の機能ブロック図の一例を表す図である。同図において、デバッガ21は、例えば、ウィンドウ処理手段31、サブルーチン実行手段32、デバッグ情報管理手段33、メモリ管理手段34、レジスタ管理手段35、を有する。ウィンドウ処理手段31はデバッガ21の表示画面に出力された情報を処理する手段であり、ウィンドウ情報管理テーブルTwにアクセスする。デバッグ情報管理手段33は、デバッグ対象プログラム60生成時に合わせて生成されるデバッグ情報管理テーブルTdを管理する手段である。メモリ管理手段34は、デバッグ対象プログラム60が動作するコンピューター50のメモリを管理する手段であり、メモリ管理テーブルTmにアクセスする。レジスタ管理手段35は、コンピューター50のレジスタを管理する。本実施の形態例におけるデバッガ21の処理について説明する前に、まず、本実施の形態例におけるデバッグ対象プログラム60のソースコードの概要と、デバッガ21の主な機能、及び、従来のデバッガにおけるデバッグ処理の流れを説明する。図3は、従来のデバッガにおける表示画面C1、C2の一例である。同図の表示画面C1、C2には、デバッグ対象プログラム60を構成するソースコードの一部source1.c:S1、source2.c:S2が表示されている。ここで、まず、ソースコードS1、S2について説明する。図3のソースコードS1には、デバッグ対象プログラム60のメインルーチンmainと、当該メインルーチンmainから呼び出されるサブルーチンadd_numが記述されている。一方、ソースコードS2には、ソースコードS1に記述されたサブルーチンadd_numから呼び出されるサブルーチンのひとつであるサブルーチンFuncCが記述されている。ソースコードS1では、6行目から12行目までメインルーチンmainが、14行目から28行目までサブルーチンadd_numが記述されている。メインルーチンmainの9行目の命令文は、サブルーチンadd_numを呼び出し、当該サブルーチンの処理結果を示す戻り値を変数retにセットする命令文である。このサブルーチンadd_numの処理結果を示す戻り値は、ソースコードS1の14行目から28行目内のreturn命令文によって出力される定数ERRORや変数numである。return命令は、その引数にセットした値ここでは、ERRORnumを戻り値として出力し、サブルーチンを終了させる命令である。さらに、11行目のreturn命令文は、その引数にセットした変数retを、デバッグ対象プログラム60自体の戻り値として出力する命令文である。また、サブルーチンadd_numの18行目の命令文はサブルーチンFuncA、21行目の命令文はサブルーチンFuncB、24行目の命令文はサブルーチンFuncCをそれぞれ呼び出すと共に例えば、24行目の場合はFuncC部分、当該サブルーチンの処理結果を示す戻り値を変数numにセットする命令文である。例えば、24行目のサブルーチンFuncCの呼び出し命令文の場合、変数numにセットされる戻り値は、サブルーチンFuncCソースコードS2内のreturn命令によって出力される定数ERRORまたは変数num1である。そして、各命令文18行目、21行目、24行目では、さらに、if文によって、戻り値がセットされた変数numとエラー値を示す定数ERRORとを比較する。値が一致する場合、次行のreturn命令文19行目、22行目、25行目が実行され、サブルーチンadd_numは定数ERRORを出力して終了する。つまり、各サブルーチンが出力する戻り値例えば、FuncCの場合、ERRORまたはnum1がERRORであり、if文の判定がtrueの場合、return命令文19行目、22行目、25行目は、定数ERRORを戻り値として出力する。一方、値が一致しない場合は、次行のreturn命令文は実行されず、その後続の命令文が実行される。全てのサブルーチンFuncA~FuncCが戻り値として定数ERRORを出力しない場合、27行目のreturn命令文が実行され、変数numが戻り値として出力される。続いて、図3のソースコードS2について説明する。ソースコードS2には、ソースコードS1のサブルーチンadd_numから呼び出されるサブルーチンFuncCが記述されている。サブルーチンFuncCの76行目、79行目、101行目の命令文は、前述と同様に、それぞれサブルーチンFuncF、FuncG、FuncHを呼び出し、その戻り値がセットされた変数num1と定数ERRORとを比較する。値が一致する場合、サブルーチンFuncCを終了させる次行のreturn命令文77行目、80行目、102行目が実行され、サブルーチンFuncCは定数ERRORを出力して終了する。その結果、ソースコードS1におけるサブルーチンadd_numの24行目のFuncC呼び出し命令文の変数numに、定数ERRORがセットされる。一方、値が一致しない場合は、次行のreturn命令文は実行されず、その後続の命令文が実行される。全てのサブルーチンFuncF~FuncHが戻り値として定数ERRORを出力しなければ、104行目の変数num1の値を出力するreturn命令文が実行される。このように、図3の本実施の形態例におけるデバッグ対象プログラム60において、上位のサブルーチンadd_numから下位のサブルーチンFuncA、FuncB、FuncCが呼び出され、下位のサブルーチン例えば、サブルーチンFuncCから、さらに下位のサブルーチン例えば、FuncF、FuncG、FuncHが呼び出される。また、下位のサブルーチンの戻り値がif文による比較によってエラーを示す値であると判定された場合、その直後のreturn命令は、定数ERRORを戻り値として出力する。つまり、if文による戻り値判定直後の命令文returnERRORは、各サブルーチンのエラー処理に該当する。また、図3の例において、サブルーチンadd_numは、14行目の命令文から順に実行され、19行目の命令文が実行される場合はサブルーチンFuncA、22行目の命令文が実行される場合はサブルーチンFuncB、25行目の命令文が実行される場合はサブルーチンFuncCにおいてエラーが発生することを表す。一方、14行目、19行目、25行目の命令文が実行されず、27行目のreturn命令文が実行される場合、サブルーチンFuncA~FuncCでは、エラーが発生しなかったことを表す。また、仮に、サブルーチンFuncCでエラーが発生する場合、77行目の命令文が実行される場合はサブルーチンFuncF、80行目の命令文が実行される場合はサブルーチンFuncG、102行目が実行される場合はサブルーチンFuncHにおいてエラーが発生することを表す。また、77行目、80行目、102行目の命令文が実行されず、104行目のreturn命令文が実行される場合、サブルーチンFuncF~FuncHでは、エラーが発生しなかったことを表す。なお、図3に示したソースコードS1、S2は、デバッグ対象プログラム60を構成するソースコードの一部である。デバッグ対象プログラム60の全体のサブルーチン構成については、別の図で後述する。続いて、図3の従来のデバッガの表示画面C1、C2及び図4に基づいて、デバッガの主な機能について説明する。デバッガの主な機能は、ブレークポイント機能、ステップイン機能、ステップオーバー機能である。初めにブレークポイント機能について説明する。ブレークポイント機能は、デバッガ上で、デバッグ対象プログラム60の任意の命令文にブレークポイントが設定され実行が指示された場合に、当該ブレークポイントを設定した命令文の直前でデバッグ対象プログラム60の処理を一時停止ブレークする機能である。ただし、ブレークポイントを設定した命令文が実行されない場合、デバッグ対象プログラム60はブレークしない。また、複数のブレークポイントが設定されている場合、デバッガ対象プログラムは初めに実行されるブレークポイントでブレークする。ユーザーは、ブレークポイント機能を利用して、エラー処理が発生する下位のサブルーチンを特定する。例えば、ユーザーは、デバッガ上で、予め、サブルーチンのエラー処理の命令文にブレークポイントを設定しておき、デバッグ対象プログラム60を実行させる。デバッグ対象プログラム60がブレークした場合、ブレークしたブレークポイントに対応するサブルーチンのエラー処理が実行されること、即ち、当該サブルーチンでエラーが発生したものと判定される。図3のデバッガの表示画面C1では、×印はブレークポイントB1、B2、B3が設定された命令文を、行番号の左に記された丸印はブレークポイントの設定が可能な命令文を示す。同図の表示画面C1は、サブルーチンadd_num内で呼び出されるサブルーチンFuncA、FuncB、FuncCのエラー処理の命令文19行目、22行目、25行目にそれぞれブレークポイントB1、B2、B3が設定され、実行された結果、ブレークポイントB3でブレークした状態一時停止状態を表す。同図の黒色の矢印Y1は、一時停止中のデバッグ対象プログラム60が次に実行する命令文、つまり、デバッガ上のプログラムカウンタ値の示す命令文を指す。ブレーク後、デバッグ対象プログラム60は、ブレークポイントB3に対応する命令文25行目の直前で一時停止状態となるため、同図の矢印Y1は25行目の命令文を指す。そして、デバッグ対象プログラム60の処理は、当該命令文から再開される。続いて、デバッガの別の機能であるステップイン機能、ステップオーバー機能について説明する。図4は、デバッガにおけるステップイン機能、ステップオーバー機能を説明する図である。同図では、図3で説明したサブルーチンadd_num、及び、当該サブルーチンadd_numから呼び出されるサブルーチンFuncA~FuncCを例示している。また、同図において、直線SLは通常の実行時、点線SIはステップイン指示時、破線SOはステップオーバー指示時におけるプログラムカウンタ値の遷移を表す。サブルーチンadd_numが実行される場合、プログラムカウンタ値は同図の直線SLのように遷移する。ステップイン機能は、対象の命令文が下位のサブルーチンを呼び出す命令文である場合、当該下位のサブルーチンの初めの命令文の直前までデバッグ対象プログラム60の処理を進める機能である。ユーザーは、下位のサブルーチンの呼び出し命令文にステップインを指示することによって、デバッグ対象のサブルーチンを下位のサブルーチンに変更する。図4において、デバッガ上でデバッグ対象プログラム60が、サブルーチンFuncAの呼び出し命令文の直前で一時停止している場合にP1、当該命令文にステップインが指示されると、サブルーチンFuncAの呼び出し処理だけが実行され、デバッグ対象プログラム60の処理は、サブルーチンFuncAの初めの命令文直前P2で一時停止する。この時、プログラムカウンタ値は、サブルーチンFuncAの呼び出し命令文を示す値から、サブルーチンFuncA内の初めの命令文を示す値に遷移する。一方、ステップオーバー機能は、対象命令文が下位のサブルーチンを呼び出す命令文である場合、当該下位のサブルーチン内の全ての命令文を実行し当該呼び出し命令文の直後まで処理を進める機能である。ユーザーは、下位のサブルーチンの呼び出し命令文にステップオーバーを指示することによって、デバッグ対象のサブルーチンにおいて1命令分処理を進める。図4において、デバッガ上でデバッグ対象プログラム60が、サブルーチンFuncBの呼び出し命令文の直前で一時停止している場合にP3、当該命令文にステップオーバーが指示されると、サブルーチンFuncBの全ての命令文が実行されデバッグ対象プログラム60の処理は、サブルーチンFuncBの呼び出し命令文の直後P4で一時停止する。この時、プログラムカウンタの値は、サブルーチンFuncBの呼び出し命令文を示す値から、サブルーチンFuncB呼び出し命令文の後続の命令文を示す値に遷移する。以上が、デバッガの主な機能である。次に、従来のデバッガにおけるデバッグ処理の流れについて説明するが、まず、デバッグ対象プログラム60全体のサブルーチンの構成を説明する。図5は、本実施の形態例におけるデバッグ対象プログラム60全体のサブルーチンの構成を表す図である。同図では、上から下にかけて、上位のルーチンと、当該上位のルーチンから呼び出される下位のサブルーチンとの関係を表す。また、本実施の形態例のデバッグ対象プログラム60において、不具合を有する最下層のサブルーチンは、仮にサブルーチンFuncOであるとする。サブルーチンFuncOは、エラーを示す戻り値を出力する。図3で前述した通り、メインルーチンmainからサブルーチンadd_numが呼び出され、当該サブルーチンadd_numからサブルーチンFuncA、FuncB、FuncCが呼び出される。また、サブルーチンFuncCからは、サブルーチンFuncF、FuncG、FuncHが呼び出される。また、図5に示すように、その他のサブルーチンからも、下位のサブルーチンがそれぞれ呼び出される。このように、本実施の形態例におけるデバッグ対象プログラム60は、多階層のサブルーチン構成を有する。そして、図5に示す通り、本実施の形態例における不具合を有する最下層のサブルーチンFuncOは、メインルーチンmainから、5つのサブルーチンadd_num、FuncC、FuncF、FuncI、FuncMを介して呼び出される。一般的に、サブルーチンで呼び出される下位のサブルーチンからエラーを示す戻り値が出力された場合、当該サブルーチンでもその戻り値に基づいて、エラーを示す戻り値を出力する。従って、この例において、サブルーチンFuncOがエラーを示す戻り値を出力することにより、サブルーチンadd_num、FuncC、FuncF、FuncI、FuncMも、同様にエラーを示す戻り値を出力する。図5のようなデバッグ対象プログラム60について、不具合を有する最下層のサブルーチンを特定する場合、例えば、ユーザーは、デバッガ上で、デバッグ対象プログラム60の全てのサブルーチンについて、その呼び出し命令後のエラー処理の命令文にブレークポイントを設定し実行させる。この結果、デバッグ対象プログラム60は、初めに実行対象となるブレークポイント、即ち、不具合を有する最下層のサブルーチン呼び出し後のエラー処理の命令文に設定されたブレークポイントでブレークする。これにより、ユーザーは、ブレークしたブレークポイントに基づいて、不具合を有する最下層のサブルーチンを特定できる。しかしながら、この方法によると、デバッグ対象プログラム60が膨大なサブルーチン呼び出し命令文を有する場合、ブレークポイントの設定処理だけで膨大な工数を要する。そこで、従来のデバッガによって、ユーザーは、上位のサブルーチンから下位のサブルーチンにかけて、エラーが発生するサブルーチンを順に特定することにより、エラーを有する最下層のサブルーチンを特定していた。具体的に、ユーザーは、上位のサブルーチンから呼び出されるサブルーチンのうちエラーが発生する下位のサブルーチンを特定し、続いて、当該特定された下位のサブルーチンから呼び出されるさらに下位のサブルーチンのうちエラーが発生するサブルーチンを特定していく。ユーザーは、この処理を、エラーが発生する不具合を有する最下層のサブルーチンが特定されるまで繰り返す。この処理を、次のフローチャート図に基づいて簡単に説明する。図6は、図5に示したデバッグ対象プログラム60について、不具合を有する最下層サブルーチンFuncOを特定する場合の従来のデバッガにおける操作手順を示すフローチャート図である。なお、デバッグ処理に当たり、ユーザーは、サブルーチンadd_numがエラーを示す戻り値を出力することを予め認識している。そのため、初め、デバッグ対象のサブルーチンはサブルーチンadd_numに設定されるS11。まず、ユーザーは、図3のように、デバッガ上で、デバッグ対象プログラム60について、デバッグ対象のサブルーチンadd_num内で呼び出される下位のサブルーチン全てFuncA~FuncCについて、その実行後のエラー処理の命令文ソースコードS1の19行目、22行目、25行目にブレークポイントB1~B3を設定するS12。続いて、ユーザーは、デバッガにデバッグ対象プログラム60の連続実行を指示するS13。この例では、サブルーチンFuncCは、エラーを示す戻り値定数ERRORを出力する。そのため、デバッグ対象プログラム60は、図3のように、サブルーチンFuncC実行後のエラー処理の命令文25行目に設定されたブレークポイントB3でブレークする。これにより、サブルーチンFuncCにおけるエラーの発生が検出される。続いて、ユーザーは、ブレークしたブレークポイントに対応する下位のサブルーチン、即ち、エラーの発生が検出された下位のサブルーチンFuncCが、不具合を有する最下層のサブルーチンであるか否かを判定するS14。例えば、ユーザーは、当該下位のサブルーチンFuncCからさらに呼び出される下位のサブルーチンの有無に基づいて、当該下位のサブルーチンFuncCが不具合を有する最下層のサブルーチンであるか否かを判定する。この例において、サブルーチンFuncCから、サブルーチンFuncF~FuncGが呼び出されるため、サブルーチンFuncCは最下層のサブルーチンではないと判定されるS14のNO。そこで、ユーザーは、デバッグ対象のサブルーチンを、サブルーチンadd_numから、エラーの発生が検出された下位のサブルーチンFuncCに変更しS15、サブルーチンFuncCについて工程S12~S14の処理を行わせる。ただし、この時、デバッグ対象プログラム60は、25行目のブレークポイントB3で一時停止しており、サブルーチンFuncCの処理は実行された後である。デバッガは、デバッグ対象プログラム60を元のサブルーチンFuncCの開始位置に遡って再実行することができないため、ユーザーは、デバッグ対象プログラム60を、初めの命令文から実行し直す。具体的に、ユーザーは、デバッガ上で、設定中のブレークポイントを全て解除しデバッグ対象プログラム60を終了させると共にS16、デバッグ環境を初期化させるS17。そして、同様にして、ユーザーは、新たなデバッグ対象のサブルーチンFuncCについて、工程S12~S14の処理を行わせる。一方、ブレークしたブレークポイントに対応する下位のサブルーチンが不具合を有する最下層のサブルーチンであると特定された場合S14のYES、S18、ユーザーはデバッグ処理を終了する。図5のデバッグ対象プログラムの場合、デバッグ対象のサブルーチンがサブルーチンFuncMの時、サブルーチンFuncM内で呼び出される下位のサブルーチンFuncOが、不具合を有する最下層のサブルーチンであるとして特定されるS14のYES、S18。なお、工程S14の判定において、エラーの発生が検出された当該下位のサブルーチンFuncCの戻り値等に基づいて当該下位のサブルーチンが不具合を有する最下層のサブルーチンであるか否かが判定可能な場合、ユーザーは戻り値に基づいて判定してもよい。例えば、エラーの発生が検出された当該下位のサブルーチンFuncCの戻り値が、サブルーチンFuncCから呼び出される下位のサブルーチンFuncF~FuncGのいずれかで出力される戻り値であることが判明している場合、当該下位のサブルーチンFuncCは不具合を有する最下層のサブルーチンではないと判定されるS14のNO。また、同図に図示していないが、例えば、ユーザーは、エラーの発生が検出された当該下位のサブルーチンから呼び出されるさらに下位のサブルーチンにおけるエラーの有無に基づいて、当該下位のサブルーチンが不具合を有する最下層のサブルーチンであるか否かを判定してもよい。具体的に、ユーザーは、デバッグ対象のサブルーチンを、サブルーチンadd_numからエラーの発生が検出された下位のサブルーチンFuncCに変更後、変更したサブルーチンFuncCについて工程S12~S14の処理を行わせる。そして、エラーが発生する下位のサブルーチンがない場合に、ユーザーは、サブルーチンFuncCを最下層のサブルーチンと判定する。このように、ユーザーは、デバッグ対象のサブルーチンを、エラーが発生する下位のサブルーチンに変更しながら、不具合を有する最下層のサブルーチンが特定されるまで繰り返す。しかし、この過程において、ユーザーは、デバッグ対象のサブルーチンを変更する度に、デバッグ対象プログラム60を初めからの再実行させるS16、S17。図5のデバッグ対象プログラム60の場合、不具合を有する最下層のサブルーチンFuncOが特定されるまで、デバッグ対象プログラム60の再実行処理が5回行われる。これは、デバッグ処理の操作を煩雑にする上、デバッグ対象プログラム60の実行がテスト環境の準備や機器の再起動、及び画面操作等を伴う場合、デバッグ処理の工数を増大させる。そこで、本実施の形態例におけるデバッガ21は、デバッグ対象のサブルーチン内で一時停止した状態で、停止以降に実行される下位のサブルーチンの呼び出し命令文の指定に応答して、一時停止時のメモリ情報及びプログラムカウンタ値を含むプログラム実行状態を退避させる。そして、デバッガ21は、当該下位のサブルーチンを実行しその実行結果情報を表示画面に出力すると共に、退避したプログラム実行状態を復帰させる以下、サブルーチンの事前実行と称する。これにより、ユーザーは、事前実行対象のサブルーチンを指定するだけで、意識的にデバッグ対象プログラム60を実行させることなく、事前実行対象のサブルーチンの実行結果情報を参照することができる。そして、ユーザーは、サブルーチンの事前実行結果情報を参照した上で、デバッグ対象プログラム60の処理を、当該エラーが発生した下位のサブルーチン呼び出し命令の直前から再開させて、エラーが発生した下位のサブルーチン内のさらに下位のサブルーチンのいずれでエラーが発生するかをチェックすることができる。これにより、ユーザーは、サブルーチンの事前実行結果情報がエラーを示すことにより、デバッグ対象のサブルーチンを当該下位のサブルーチンに変更する場合、デバッグ対象プログラム60を初めから再実行させる必要がない。以下、具体的に説明する。図7は、本実施の形態例におけるデバッガ21の表示画面C1aの一例である。同図のように、本実施の形態例におけるデバッガ21は、表示画面C1a上でのサブルーチンFuncAの呼び出し命令文18行目のマウスポインタMaによる指定に応答して、サブルーチンFuncAを実行しその実行結果を示すメモリ情報Vaを表示画面に出力する。この時、デバッガ21は、サブルーチンFuncAの事前実行後、メモリ情報及びプログラムカウンタ値を事前実行前の状態に復帰させる。そのため、同図のデバッガ表示画面上の黒矢印YaはサブルーチンFuncAの呼び出し命令文の後続の命令文ではなく、当該呼び出し命令文を指したままである。続いて、本実施の形態例におけるデバッガ21における、サブルーチン事前実行機能を使用した場合のデバッグ処理の流れについて、フローチャート図に基づいて説明する。図8は、不具合を有する最下層サブルーチンを特定する本実施の形態例におけるデバッガ21の操作手順を示すフローチャート図である。まず、同図のフローチャート図における実線で表す処理について説明する。初めに、ユーザーは、デバッグ対象のサブルーチンを決定するS21。次に、ユーザーは、デバッガ21上で、デバッグ対象のサブルーチン内で呼び出される事前実行対象の下位サブルーチン呼び出し命令文の直前までデバッグ対象プログラム60の処理を進めるS22。続いて、ユーザーが下位のサブルーチンを事前実行対象のサブルーチンとして指定すると、デバッガ21は当該サブルーチンを実行し、その実行結果を示すメモリ情報を表示画面に表示するS23。例えば、ユーザーは、表示画面に出力されたソースコードの下位のサブルーチン呼び出し命令文にマウスポインタを移動させることにより以下、マウスオーバーと称する、当該下位のサブルーチンを事前実行対象のサブルーチンとして指定する。工程S23のデバッガ21の処理の詳細については、別のフローチャート図で後述する。続いて、ユーザーは、表示画面に出力された事前実行対象の下位サブルーチンの実行結果を示すメモリ情報に基づいて、事前実行対象の下位サブルーチンでエラーが発生したか否かを判定するS24。例えば、ユーザーは、メモリ情報が有する下位サブルーチンの実行結果を示す戻り値に基づいて、当該下位サブルーチンでのエラー発生の有無を判定する。エラー発生無しと判定された場合S24のNO、ユーザーは、デバッガ21上で、後続の命令文であって、下位のサブルーチン呼び出す命令文の直前までデバッグ対象プログラム60の処理を進めるS22。そして、ユーザーは、同様にして、当該後続の命令文から呼び出されるサブルーチンを事前実行対象のサブルーチンとして指定し、その実行結果を示すメモリ情報を表示画面に出力させるS23。一方、事前実行対象の下位サブルーチンでエラー発生有りと判定された場合S24のYES、ユーザーは、当該下位サブルーチンが不具合を有する最下層のサブルーチンであるか否かを判定するS25。例えば、ユーザーは、エラー発生有りと判定された事前実行対象の下位サブルーチンから呼び出されるさらに下位のサブルーチンの有無に基づいて、事前実行対象の下位サブルーチンが不具合を有する最下層のサブルーチンであるか否かを判定する。最下層のサブルーチンである場合S25のYES、ユーザーは、エラーが発生した事前実行対象の下位サブルーチンを、不具合を有する最下層のサブルーチンとして特定し、デバッグ処理を終了するS27。一方、最下層のサブルーチンではない場合S25のNO、ユーザーは、デバッグ対象のサブルーチンを、エラーが発生した事前実行対象の下位サブルーチンに変更するS26。具体的に、ユーザーは、当該下位サブルーチンの呼び出し命令に対して図4で示したステップインを指示し、デバッグ対象プログラム60の処理を、当該下位サブルーチン内の初めの命令文直前まで進める。そして、ユーザーは、引き続き、新たなデバッグ対象のサブルーチン内の命令文について、工程S22~S26の処理を行う。このように、ユーザーは、エラーが発生した事前実行対象の下位サブルーチンが最下層のサブルーチンになるまで、工程S22~S26の処理を繰り返す。そして、当該エラーが発生した事前実行対象の下位サブルーチンが最下層のサブルーチンの場合にS28のNO、ユーザーは、当該下位サブルーチンを、不具合を有する最下層のサブルーチンとして特定する。また、ユーザーは、図8の工程S25の判定、即ち、下位サブルーチンが不具合を有する最下層のサブルーチンであるか否かの判定を、別の方法で行ってもよい。この処理を、同図の点線で表したフローチャート図に基づいて説明する。この方法において、デバッグ対象のサブルーチンから呼び出される下位サブルーチンであって、エラーが発生する下位サブルーチンがない場合に、ユーザーは、デバッグ対象のサブルーチンを、不具合を有する最下層のサブルーチンとして特定する。具体的に、事前実行対象の下位サブルーチンでエラー発生有りと判定された場合S24のYES、ユーザーは、デバッグ対象のサブルーチンを、事前実行対象の下位サブルーチンに変更するS26。そして、ユーザーは、引き続き、新たなデバッグ対象のサブルーチン内の命令文について、工程S22~S24の処理を行う。一方、事前実行対象の下位サブルーチンでエラー発生無しと判定された場合S24のNO、ユーザーは、デバッグ対象サブルーチン内に、後続の、下位のサブルーチン呼び出し命令があるか否かを判定するS28。後続に、下位のサブルーチン呼び出し命令がある場合S28のYES、同様にして、ユーザーは、工程S22~S24の処理を行う。一方、後続に、下位のサブルーチン呼び出し命令がない場合S28のNO、デバッグ対象サブルーチン内にエラーが発生する下位のサブルーチンが存在しないことを示す。これは、デバッグ対象サブルーチンで発生するエラーが、当該デバッグ対象サブルーチンから呼び出される下位のサブルーチンに因らないことを示す。従って、デバッグ対象のサブルーチンが、不具合を有する最下層のサブルーチンとして特定されるS29。即ち、図8の点線で表した処理によると、ユーザーは、エラーが発生する下位サブルーチンを有しないデバッグ対象サブルーチンを検出するまで、工程S22~S24、S26の処理を繰り返す。そして、エラーが発生する下位サブルーチンを有しないデバッグ対象のサブルーチンを検出した場合S28のNO、ユーザーは、当該デバッグ対象のサブルーチンを、不具合を有する最下層のサブルーチンとして特定する。ユーザーは、このように、不具合を有する最下層のサブルーチンを特定してもよい。続いて、図8のフローチャートに基づいて、図5のデバッグ対象プログラム60について、不具合を有する最下層のサブルーチンFuncOを特定する処理を図7、図9を使用して説明する。この例では、同図の実線の処理に基づいて説明する。図6の従来のデバッガにおけるデバッグ処理と同様にして、初めのデバッグ対象のサブルーチンは、サブルーチンadd_numに設定されるS21。そこで、ユーザーは、例えば、デバッガ21上で、サブルーチンadd_num内のサブルーチンFuncA呼び出し命令文図7の18行目にブレークポイントを設定してデバッグ対象プログラム60を連続実行させ、デバッグ対象プログラム60をブレークさせるS22。この結果、デバッグ対象プログラム60は、デバッグ対象のサブルーチンadd_num内のサブルーチンFuncAの呼び出し命令文18行目の直前で一時停止する。そして、図7のように、ユーザーが、表示画面C1aに出力されたサブルーチンFuncAの呼び出し命令文をマウスオーバーすると、デバッガ21は、デバッグ対象プログラム60のメモリ状態及びプログラムカウンタ値を一時退避し、サブルーチンFuncA内の最後の命令文まで連続実行して実行結果情報である戻り値5を表示画面に出力すると共に、一時退避したメモリ情報を復帰させるS23。そのため、同図の表示画面C1aにおいて、黒矢印Yaは、サブルーチンFuncAの呼び出し命令文を指したままである。また、戻り値5は定数ERROR-1と一致しないためエラーに該当せず、サブルーチンFuncAはエラーの発生無しと判定されるS24のNO。従って、ユーザーは、続いて、後続の命令文で呼び出される下位のサブルーチンFuncBについて、同様に、事前実行処理を行わせるS22~S24。図9は、サブルーチンFuncB、FuncCを事前実行する場合におけるデバッガ21の表示画面の一例である。ユーザーは、引き続き、サブルーチンFuncB呼び出し命令文21行目の直前まで、デバッグ対象プログラム60の処理を進めるS22。具体的に、ユーザーは、サブルーチンFuncAの呼び出し命令文18行目にステップオーバーを指示し、プログラムカウンタ値を21行目の命令文を示す値まで遷移させる。そして、ユーザーは、サブルーチンFuncBを指定してMb事前実行させ、同図のように、戻り値2を含む実行結果情報Vbを表示させるS23。同様にして、サブルーチンFuncBの戻り値2は、エラー該当しないS24のNO。そのため、ユーザーは、続いて、図9の表示画面C1cのように、デバッガ上で、サブルーチンFuncC呼び出し命令文24行目の直前までデバッグ対象プログラム60を連続実行させた上でS22、サブルーチンFuncCを指定してMc事前実行させ、その実行結果情報Vcを表示させるS23。同図の実行結果情報Vcによると、サブルーチンFuncCからはエラーを示す戻り値-1が出力されることがわかる。そこで、ユーザーは、サブルーチンFuncCでエラーが発生したものと判定するS24のYES。図5で前述した通り、サブルーチンFuncCからは、さらに下位のサブルーチンFuncF~FuncHが呼び出される。そのため、サブルーチンFuncCは、不具合を有する最下層のサブルーチンに当たらないと判定されるS25のNO。そこで、ユーザーは、デバッグ対象のサブルーチンを、サブルーチンadd_numからサブルーチンFuncCに変更するS26。具体的に、ユーザーは、デバッガ21上で、サブルーチンFuncCの呼び出し命令文24行目にステップインを指示し、デバッグ対象プログラム60の処理をサブルーチンFuncC内の初めの命令文の直前図3のソースコードS2の73行目まで進める。この時、デバッガ21は、サブルーチンFuncCを実行したものの、プログラムカウンタ値及びメモリ情報はサブルーチンFuncC実行前の状態に復帰している。デバッグ対象プログラム60はサブルーチンFuncCの呼び出し命令文24行目の直前から再開されるため、ユーザーは、サブルーチンFuncCの呼び出し命令文24行目に、ステップインを指示することができる。つまり、ユーザーは、デバッグ対象のサブルーチンをサブルーチンFuncCに変更する際に、デバッグ対象プログラム60の初めからの再実行を要しない。続いて、ユーザーは、新たなデバッグ対象のサブルーチンFuncCに対して、同様に、工程S22~S25の処理を行う。この結果、サブルーチンFuncFのエラー発生が検出されるS24のYES。サブルーチンFuncFもまた、不具合を有する最下層のサブルーチンではないと判定されるためS25のNO、ユーザーは、デバッグ対象のサブルーチンをサブルーチンFuncCから下位のサブルーチンFuncFに変更するS26。同様に、デバッグ対象のサブルーチン変更に当たり、デバッガ21は、デバッグ対象プログラム60の初めからの再実行を要しない。そして、デバッグ対象のサブルーチンがサブルーチンFuncMの時、サブルーチンFuncOが事前実行され、当該サブルーチンが不具合を有する最下層のサブルーチンとして特定されるS24のYES、S25のYES、S27。このように、ユーザーは、デバッガ21上で、指定したサブルーチンを事前実行してその結果を参照しながら、デバッグ対象プログラム60の処理を事前実行前の状態から再開させることができる。そのため、エラーが発生する下位のサブルーチンが検出され、デバッグ対象のサブルーチンをエラーが発生する下位のサブルーチンに変更する場合、ユーザーは、デバッグ対象プログラム60を初めから再実行させる必要がない。これにより、ユーザーは、デバッガ21上で、デバッグ対象プログラム60を何度も再実行させることなく、一連の処理の中で、不具合を有する最下層のサブルーチンFuncOを特定することができる。続いて、図8のフローチャート図における工程S23のデバッガ21の処理の詳細を説明する。図8の工程S23の処理は、デバッガ21が、事前実行対象のサブルーチンの指定に応答して、実行中のデバッグ対象プログラム60のメモリを一時退避し、事前実行対象のサブルーチンを実行しその実行結果を表示画面に出力すると共に、一時退避したメモリを復帰させる処理である。図10は、図8の本実施の形態例のデバッガ21における工程S23の処理の詳細を示すフローチャート図である。まず、デバッガ21のウィンドウ処理手段31は、ユーザーのマウスオーバーによる事前実行対象のサブルーチンの指定に応答して、指定部分に該当するテキスト情報を取得するS31。具体的に、ウィンドウ処理手段31は、デバッグ対象プログラム60のソースコードが表示されたウィンドウの情報を有するウィンドウ情報テーブルTwと、マウスポインタの示す座標情報とを照合することによって、当該マウスポインタの指すテキスト情報を取得する。この時、ウィンドウ処理手段31は、必要に応じて、取得したテキスト情報からサブルーチンを示すテキスト情報をさらに抽出してもよい。図11は、本実施の形態例におけるデバッガ21が参照するウィンドウ情報テーブルTw及びデバッグ情報テーブルTdを表す図である。同図のウィンドウ情報テーブルTwは、図7の表示画面C1aにおけるウィンドウのウィンドウ情報を有する。ウィンドウ情報テーブルTwは、例えば、画面上のウィンドウ左上の座標情報X、Y=143、254、ウィンドウの幅及び高さを示すウィンドウサイズ情報X、Y=181、752、テキストバッファポインタ情報H‘007C4000、先頭行番号情報source1.c5を有する。テキストバッファポインタ情報はウィンドウに表示されたソースコードのテキストデータintmainunsignedlongvalueintret...の格納アドレスを示し、先頭行番号情報はウィンドウに表示されたソースコードのファイル名及び、先頭命令文の行番号を示す。具体的に、図7の表示画面C1aに表示されたソースコードFuncA部分をマウスポインタが移動すると、ウィンドウ処理手段31は、マウスポインタの座標とウィドウ情報テーブルTwの有するウィンドウ座標情報及びウィンドウサイズとを照合する。そして、ウィンドウ処理手段31は、照合結果に基づいて、ウィンドウ情報テーブルTwのテキストバッファポインタ情報が指すテキストデータから、マウスポインタの指す部分のテキスト情報この例では、FuncAを取得する。図10のフローチャート図に戻り、続いて、デバッガ21のデバッグ情報管理手段33は、抽出したテキスト情報がサブルーチンであるか否かを判定するS32。具体的に、デバッグ情報管理手段33は、取得したテキスト情報とシンボル情報が一致するデバッグ情報テーブルTd1を検出する。そして、デバッグ情報管理手段33は、検出したデバッグ情報テーブルTd1の種別情報に基づいて、当該テキスト情報がサブルーチンを示すか否かを判定する。サブルーチンではない場合S32のNO、デバッガ21はマウスオーバーに応答する処理を行わない。一方、サブルーチンである場合S32のYES、デバッグ情報管理手段33は、事前実行対象となる当該サブルーチンのデバッグ情報テーブルTdに引数のデバッグ情報テーブルTdが関連付けられているか否かに基づいて、サブルーチンの引数の有無を判定するS33。一方、サブルーチンが引数を有する場合S33のYES、デバッグ情報管理手段33は、引数のデバッグ情報テーブルTdのアドレス情報を参照して、引数の値を取得可能であるか否かを判定するS34。アドレス情報には有効なアドレスが格納されている場合、引数の値が取得可能であることを示す。引数の値が取得可能である場合S34のYES、メモリ管理手段34及びレジスタ管理手段35は、引数のデバッグ情報テーブルTdのアドレス情報に基づいて、引数の値を取得する。この時、メモリ管理手段34は、必要に応じて、メモリ53の管理情報を有するメモリ管理テーブルTmを参照する。一方、デバッグ情報テーブルTdが有効なアドレス情報を有しない場合S34のNO、デバッグ情報管理手段33は当該引数の値が取得不可能であるものとして判定する。この場合、デバッガ21はマウスオーバーに応答する処理を行わない。図11のテーブルTd1、Td2は、デバッグ情報テーブルを表す。デバッグ情報テーブルは、デバッグ対象プログラム60生成時に合わせて、デバッグ対象プログラム60内の全てのサブルーチン及び変数それぞれについて生成される。同図では、サブルーチンFuncAのデバッグ情報テーブルTd1と、その引数である変数valueのデバッグ情報テーブルTd2とが例示されている。サブルーチンが引数を有する場合、同図のように、サブルーチンのデバッグ情報テーブルTd1に、引数である変数valueのデバッグ情報テーブルTd2が関連付けられる。デバッグ情報テーブルTd1、Td2は、例えば、シンボル情報、アドレス情報、種別情報、行番号情報を有する。ただし、変数のデバッグ情報テーブルTd2は行番号情報を有しない。具体的に、サブルーチンFuncAのデバッグ情報テーブルTd1は、サブルーチン名を示すシンボル情報intFuncA、サブルーチンが配置されたメモリ53のアドレス情報H‘FE044F、関数の種類を示す種別情報global関数、サブルーチンが記述されたソースファイル名と行番号情報source1.c30を有する。同様にして、変数valueのデバッグ情報テーブルTd2は、シンボル情報longvalue、変数が格納されたアドレス情報H‘000004、変数の種別情報auto変数を有する。変数の種別がauto変数である場合、当該変数の値はスタックメモリに格納される。具体的に、デバッグ情報管理手段33は、図11のデバッグ情報テーブルTd1、Td2に基づいて、テキスト情報FuncAがglobal関数、即ち、サブルーチンに該当し、サブルーチンFuncAは引数valueを有するものと判定するS32のYES、S33のYES。そこで、メモリ管理手段34及びレジスタ管理手段35は、図11の変数valueのデバッグ情報テーブルTd2に基づいて、スタックメモリのアドレス情報H’000004の示す位置から、変数valueの値を取得するS34のYES、S35。図10フローチャート図に戻り、事前実行対象のサブルーチン情報がS33のNO、当該サブルーチンが引数を有する場合はさらに引数の値がS35取得されると、デバッガ21のメモリ管理手段34及びレジスタ管理手段35は、一時停止状態のデバッグ対象プログラム60のプログラム実行状態を示すメモリ情報及びプログラムカウンタ値を退避するS36。具体的に、メモリ管理部手段34及びレジスタ管理手段35は、サブルーチンFuncAの呼び出し命令18行目の直前で一時停止状態のメモリ情報及びプログラムカウンタ値を、コンピューター50のメモリ53及びレジスタ図示せずから取得する。メモリ情報には、スタックメモリ等も含まれる。そして、メモリ管理部手段34及びレジスタ管理手段35は、取得したメモリ情報及びプログラムカウンタ値をコンピューター10のメモリ15に退避する。続いて、デバッガ21のサブルーチン実行手段32は、事前実行対象のサブルーチンFuncA内の全命令文を実行し、実行結果情報この例では、戻り値5を取得するS37。そして、デバッガ21のウィンドウ処理手段31は、図7のように、事前実行対象のサブルーチンFuncAの実行結果情報をデバッガ21の表示画面に出力すると共にS38、メモリ管理手段34及びレジスタ管理手段35は、退避したメモリ情報及びプログラムカウンタ値を復帰させるS39。そのため、図7の矢印Yaのように、デバッガ21上のプログラムカウンタ値は、サブルーチンFuncAの呼び出し命令文を示したままとなる。以上、サブルーチンFuncAが事前実行対象のサブルーチンとして指定される場合の工程S23の処理について例示したが、他のサブルーチンが指定された場合も同様である。なお、本実施の形態例では、コンピューター10の表示画面に出力された命令文上にマウスポインタを移動させるマウスオーバーによって、事前実行対象のサブルーチンが指定される場合を例示した。しかし、事前実行対象のサブルーチンは、カーソル移動やドロップダウンリストからの選択等の操作によって指定されてもよい。以上のようにして、本実施の形態例におけるデバッガ21は、デバッグ対象プログラム60が、デバッグ対象のサブルーチン内で一時停止した状態で、停止以降に実行される下位のサブルーチンの呼び出し命令文の指定に応答して、一時停止時のメモリ情報及びプログラムカウンタ値を含むプログラム実行状態を退避させる。そして、デバッガ21は、当該下位のサブルーチンを実行し、当該下位のサブルーチンの戻り値等を有する実行結果情報を表示画面に出力すると共に、退避したプログラム実行状態を復帰させる。そして、デバッガ21は、デバッグ対象プログラム60の処理を、復帰したプログラム実行状態から再開する。つまり、本実施の形態例におけるデバッガ21は、一時停止状態のデバッグ対象プログラム60について、それ以降に実行される下位のサブルーチン呼び出し命令文を、ユーザーによる指定に応答して事前に仮実行しその実行結果情報を出力しつつ、プログラム実行状態を事前実行前の状態に復帰させる。これにより、ユーザーは、事前実行対象の下位サブルーチンを指定するだけで、意識的にデバッグ対象プログラム60を実行させることなく、事前実行対象の下位サブルーチンの実行結果情報を取得することができる。このため、ユーザーは、下位サブルーチンの事前実行結果情報を取得した上で、デバッグ対象プログラム60の処理を下位サブルーチンの事前実行前の状態、即ち、事前実行対象の下位サブルーチンの呼び出し命令の直前から再開させることができる。このため、不具合を有する最下層のサブルーチンの特定処理においてデバッグ対象のサブルーチンを下位サブルーチンに変更する場合、デバッグ対象プログラム60の実行し直しを要することなく当該プログラム60の実行を継続させたまま、デバッグ対象のサブルーチンの変更が可能となる。これにより、不具合を有する最下層のサブルーチンの特定処理において、デバッグ対象プログラム60の再実行処理が不要となり、デバッグ処理に係る工数が削減される。このように、本実施の形態例におけるデバッガ21は、多階層のサブルーチンを有するデバッグ対象プログラム60における不具合を有する最下層のサブルーチンをより効率的に特定可能にし、デバッグ処理の効率を向上させる。なお、本実施の形態例では、ユーザーは、事前実行対象のサブルーチン呼び出し命令文の直前までデバッグ対象プログラム60の処理を進め、当該サブルーチンの事前実行を指示した。しかし、デバッグ対象プログラム60の処理は、サブルーチンの事前実行に当たり、必ずしも、当該サブルーチン呼び出し命令文の直前で一時停止している必要はない。つまり、ユーザーは、一時停止状態のデバッグ対象プログラム60の停止位置から数命令先に実行予定の下位サブルーチン呼び出し命令文のサブルーチンを事前実行させてもよい。この場合、デバッガ21は、停止位置から事前実行対象のサブルーチンの呼び出し命令文までの間の命令文を全て実行した上で事前実行対象のサブルーチンを実行してもよいし、当該間の命令文を実行せずにスキップし、事前実行対象のサブルーチンだけを実行してもよい。前者では、デバッガ21は、当該間の命令文が、事前実行対象のサブルーチンの実行に関連する命令文を含む場合、より適切な実行結果情報を出力することができる。一方、後者では、デバッガ21は、当該間の命令文が事前実行対象のサブルーチンの実行に関連する命令文を含まない場合は、当該間の命令文の実行に係る処理時間が省かれることにより、より高速に実行結果情報を出力することができる。なお、デバッガ21が表示画面に出力する実行結果情報は、サブルーチンの戻り値に加えて他の情報を有していてもよい。図12は、本実施の形態例におけるデバッガ21の表示画面の変形例を表す図である。同図において、デバッガ21は、サブルーチンの事前実行時に、当該サブルーチンの戻り値に加えて、当該サブルーチンの引数値の情報E1、サブルーチンの処理に要した実行時間E2、実行した命令文の履歴情報E3を、実行結果情報Vxとして表示する。これにより、ユーザーは、サブルーチンの実行に係る情報をより詳細に把握することができる。例えば、ユーザーは、サブルーチンのエラー判定処理図8のS24や、サブルーチンが不具合を有する最下層のサブルーチンか否かの判定処理図8のS25をより効率的に、より適切に行うことができる。以上の実施の形態をまとめると、次の付記のとおりである。付記1デバッグ対象プログラムのデバッグ処理をコンピューターに実行させる前記コンピューター読み取り可能なデバッガプログラムにおいて、前記デバッグ処理は、前記デバッグ対象プログラムの有するデバッグ対象サブルーチン内で当該デバッグ対象プログラムが一時停止した状態で、停止以降に実行される当該デバッグ対象サブルーチン内の下位サブルーチン呼び出し命令文の指定に応答して、前記一時停止時のメモリ情報及びプログラムカウンタ値を含むプログラム実行状態を退避し、前記下位サブルーチンを実行しその実行結果情報を表示画面に出力すると共に、前記退避したプログラム実行状態を復帰させるサブルーチン事前実行工程を、有するデバッガプログラム。付記2付記1において、前記デバッグ処理は、前記サブルーチン事前実行工程の後、前記復帰したプログラム実行状態から前記デバッグ対象プログラムの実行を再開する再開工程を有するデバッガプログラム。付記3付記1または2において、前記実行結果情報は、前記下位サブルーチンの実行結果を示す戻り値を有するデバッガプログラム。付記4付記3において、前記実行結果情報は、前記下位サブルーチンの実行時に指定する引数値を有するデバッガプログラム。付記5付記3または4において、前記実行結果情報は、前記下位サブルーチンの実行時間、または、当該下位サブルーチン内で実行された命令履歴のいずれかまたは両方を有するデバッガプログラム。付記6付記1乃至5のいずれかにおいて、前記デバッグ処理は、前記コンピューターの前記表示画面に出力された前記命令文上にポインタを移動させた時に前記命令文の指定を検出するデバッガプログラム。付記7付記1乃至6のいずれかにおいて、前記一時停止時の前記実行状態の有するプログラムカウンタ値は、前記命令文を示す値であるデバッガプログラム。付記8デバッグ対象プログラムの有するデバッグ対象サブルーチン内で当該デバッグ対象プログラムが一時停止した状態で、停止以降に実行される当該デバッグ対象サブルーチン内の下位サブルーチン呼び出し命令文の指定に応答して、前記一時停止時のメモリ情報及びプログラムカウンタ値を含むプログラム実行状態を退避し、前記下位サブルーチン呼び出し命令文を実行しその実行結果情報を表示画面に出力すると共に、前記退避したプログラム実行状態を復帰させるサブルーチン事前実行工程を、前記デバッグ対象サブルーチン内の全ての前記下位サブルーチン呼び出し命令文について、前記実行結果情報がエラーを示すエラー下位サブルーチン呼び出し命令文が検出されるまで繰り返すエラー下位サブルーチン検出工程を有し、前記エラー下位サブルーチンを前記デバッグ対象サブルーチンとして実行する前記エラー下位サブルーチン検出工程を、前記エラー下位サブルーチンが最下層のサブルーチンになるまで繰り返すデバッグ方法。付記9付記8において、前記エラー下位サブルーチン検出工程は、前記デバッグ対象サブルーチン内に前記エラー下位サブルーチンが存在しなくなるまで繰り返されるデバッグ方法。