ザブではなくサブ(sub)です……という重箱のなんとやらは置いておきまして。
デバッグウィンドウにはそういった情報はなさそうですね・・・。
HSPSDK(
http://www.onionsoft.net/hsp/v36/hspsdk/hspdll.txt)には以下のような記述があります。
------------------------------------------------
void *prmstack; // Current parameter stack area
サブルーチンやユーザー定義命令内で参照されるスタックパラメーターを格納します。
スタックパラメーターには、複数の情報が多重に保存されています。
------------------------------------------------
このスタック内には恐らくサブルーチンに渡された引数や返り値、return先の情報もあり、return先の情報とそれ以外をより分ける事ができれば可能性はありそうです。
ただそのreturn先も行数という形ではなくポインタだったりするとお手上げですね…。
Cには明るくないので推測で申し訳ないですが。
私も興味があるので、詳しい方の知見を期待します。
一応、マクロでごりごり書く力技もあります。以下サンプル。
#uselib "msvcrt"
#func memmove "memmove" var,var,int
#define SUB_ROUTINE_DEBUG
#ifdef SUB_ROUTINE_DEBUG
#undef gosub
#define gosub(%1) saveCalledLine __line__ : gosub@HSP %1
;監視したい命令は個別に追記
#define func1 saveCalledLine __line__:_func1
#endif
dim line_buf, 8
func1
gosub *label_2
stop
//呼び出し元行を8つまで記録
;最新の呼び出し元は常に要素0に書き込まれる
#deffunc saveCalledLine int prm_line_no
memmove line_buf(1), line_buf(0), 28
line_buf(0) = prm_line_no
return
#deffunc _func1
gosub *label_1
return
*label_1
return
*label_2
return