JPH07182182A - システムコール情報採取装置 - Google Patents

システムコール情報採取装置

Info

Publication number
JPH07182182A
JPH07182182A JP5322584A JP32258493A JPH07182182A JP H07182182 A JPH07182182 A JP H07182182A JP 5322584 A JP5322584 A JP 5322584A JP 32258493 A JP32258493 A JP 32258493A JP H07182182 A JPH07182182 A JP H07182182A
Authority
JP
Japan
Prior art keywords
system call
level language
issued
language interface
interface routine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5322584A
Other languages
English (en)
Inventor
Osamu Yamamoto
治 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP5322584A priority Critical patent/JPH07182182A/ja
Priority to US08/359,387 priority patent/US5615332A/en
Publication of JPH07182182A publication Critical patent/JPH07182182A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3636Debugging of software by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 アセンブラインタフェースを持つOSに対し高
級言語でアプリケーションタスクを記述した場合、アプ
リケーションタスクのシステムコール発行アドレスを含
むシステムコール情報採取装置を提供する。 【構成】 システムコール種別からそのシステムコール
のパラメータ数を得るパラメータ数抽出手段14と、高級
言語インターフェースルーチンからシステムコールが発
行されたかを判断する高級言語インターフェースルーチ
ン通過判断手段13とを具備し、高級言語インターフェー
スルーチンからシステムコールが発行された場合は高級
言語インターフェースルーチンへのリターンアドレスで
はなく高級言語インターフェースルーチンを呼び出した
アプリケーションプログラムのアドレスをその他のシス
テムコール情報と共に提供することができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は計算機において、システ
ムコール発行時のシステムコール情報を採取するシステ
ムコール情報採取装置に関する。
【0002】
【従来の技術】図27は計算機の概略図であり、この計算
機にはシステムコール情報採取装置も備えられている。
図中、200 はキーボードであり、キーボード200 はI/O
103 を介してCPU 101 へ情報を与え、CPU 101 がこの情
報をメモリ102 へ記憶させる。図21は従来のシステムコ
ール情報採取装置のソフトウェア構成を示す図である。
この例ではシステムコール実行中にエラーが発生した場
合又は正常終了した場合にシステムコール情報をメモリ
102 上のテーブル9 (例えばリングバッファ)へ保存し
ておき、システムコール情報表示手段11を用いてテーブ
ル9の内容を表示する。
【0003】図21において7はOS (オペレーティングシ
ステム。特にカーネルと呼ばれる)であり、このOS7は
ユーザプログラムがOSのサービスを要求する手段として
使用するスーパバイザ71、メモリ102 の管理を行うメモ
リ管理ルーチン72、データの管理をするデータ管理ルー
チン73、ジョブ及びプロセスの実行の制御を行うプロセ
ス管理ルーチン74並びに入出力装置の管理を行う入出力
管理ルーチン75を含む。第1リターンアドレス採取手段
8はシステムコール発行時にアプリケーションタスク
6, 6…へのリターンアドレスを採取し、第2リターン
アドレス採取手段10は割込み発生時にアプリケーション
タスク6, 6…へのリターンアドレスを採取する。テー
ブル9はこの採取したリターンアドレスを格納するメモ
リ102 上のものである。
【0004】図22はアプリケーションタスクがOS7にサ
ービスを要求するときの動作を示すフローチャートであ
る。まず、アプリケーションタスク6, 6…からシステ
ムコールを発行する(ST51)。システムコール発行時にス
タックに置かれているアプリケーションタスク6,6…
へのリターンアドレスを採取する(ST52)。その採取した
アドレスをメモリ上のテーブル9に格納する(ST53)。そ
して、スーパバイザ71へ制御を渡し(ST54)、システムコ
ールの命令を解釈する(ST55)。
【0005】つぎに、システムコール発行タスク、シス
テムコールの種類、システムコールのパラメータなどの
情報をメモリ102 上のテーブル9にセーブする(ST56)。
即ち既にメモリ102 上のテーブル9に格納されているア
プリケーションタスク6, 6…へのリターンアドレスに
採取したシステムコール情報を追加する。最後にスーパ
バイザ71は命令を実行するためにメモリ管理ルーチン7
2、データ管理ルーチン73、プロセス管理ルーチン74及
び入出力管理ルーチン75に制御を渡す(ST57)。
【0006】OS7にサービスを要求するもう一つの手段
として割込みがある。割込みが発生した場合の処理を図
23のフローチャートに基づいて説明する。割込みが要求
されると(ST61)、スタック上にセーブされているリター
ンアドレスを採取する(ST62)。採取したアドレスをメモ
リ102 上のテーブル9に格納し(ST63)、スーパバイザ71
に制御を渡す(ST64)。そして、スーパバイザ71は割込み
の種類を解析し(ST65)、割込みの種類、割り込まれたタ
スクなどの情報をメモリ102 上のテーブル9に格納する
(ST66)。スーパバイザ71は割込み処理を実行するために
メモリ管理ルーチン72、データ管理ルーチン73、プロセ
ス管理ルーチン74及び入出力管理ルーチン75に制御を渡
す(ST67)。
【0007】アプリケーションタスク6, 6…がOS7に
サービスを要求する場合にエラーが起きたときの動作は
前述の割込みが発生した場合とほぼ同様であり、システ
ムコール実行中にエラーが発生した時点で、図24のフロ
ーチャートの動作を実行する。まず、採取できるエラー
情報 (エラー発生アドレス, エラー発生タスク) を採取
し(ST72)、メモリ102 上のテーブル9に格納されている
アプリケーションタスク6, 6…へのリターンアドレス
にエラー情報を加える(ST73)。上述のようにして、メモ
リ102 上のテーブル9にシステムコール情報 (エラー情
報も含む) がセーブされる。このシステムコール情報を
表示する場合、システムコール情報表示手段11はメモリ
102 上のテーブル9を検索し、その内容を表示する。
【0008】例えば、エラー情報を表示する場合は“sh
ow error”コマンドをキーボード200 から入力する。そ
うするとエラー発生タスク、エラー発生アドレス及びそ
のシステムコールを発行したアプリケーションタスク
6, 6…のアドレスが表示される。また、アプリケーシ
ョンタスク6, 6…のシステムコール発行状況を表示す
る場合は“showアプリケーションタスク名”コマンドを
キーボード200 から入力する。そうするとシステムコー
ル情報表示手段11は発行システムコールの種類、システ
ムコールのパラメータ、アプリケーションタスクのシス
テムコールを発行したアドレスなどが表示される。
【0009】図25はアセンブラインターフェースをもつ
OS7へシステムコールを発行するプログラム例を示す説
明図である。図25に示すようにシステムコールの機能コ
ード又はパラメータをレジスタにセットし、ソフトウェ
ア割込み命令(trap)を発行することによってシステムコ
ールを実行するOS7に対して高級言語でアプリケーショ
ンタスク6, 6…を記述する。
【0010】図26はアプリケーションタスク6, 6…が
高級言語インターフェースルーチン12を通してシステム
コールを発行する場合の説明図である。図26において、
高級言語で記述されているアプリケーションタスク6,
6…から発行させるシステムコールは高級言語インター
フェースルーチン12を通してスーパバイザ71を呼び出す
ため第1リターンアドレス採取手段8はアプリケーショ
ンタスク6,6…のシステムコール発行アドレスを採取
するが、このアドレスは高級言語インターフェースルー
チン12のアドレスになる。
【0011】
【発明が解決しようとする課題】このような従来のシス
テムコール情報採取装置では、高級言語で記述されてい
るアプリケーションタスク6, 6…から発行されるシス
テムコールは高級言語インターフェースルーチン12を通
してスーパバイザ71を呼び出すため、第1リターンアド
レス採取手段8が採取するシステムコール発行アドレス
はすべて高級言語インターフェースルーチン12のアドレ
スになる。そのため、エラーを起こしたシステムコール
又は正常終了したシステムコールがアプリケーションタ
スク6, 6…のどこから発行されたのか分からず、アプ
リケーションタスク6, 6…が原因でOS処理中に起こる
エラーの解析又はアプリケーションタスク6, 6…のど
のアドレスからどのようなシステムコールが発行された
かを調べて行うデバッグに支障が生じるという問題点が
あった。
【0012】本発明はこのような問題点に鑑みてなされ
たものであって、高級言語インターフェースを持つOSに
対し、高級言語でアプリケーションタスクを記述した場
合、システムコール発行時又は割込みみ発生時にアプリ
ケーションタスクへ戻すリターンアドレスを採取するこ
とができるシステムコール情報採取装置の提供を目的と
する。
【0013】
【課題を解決するための手段】本発明に係るシステムコ
ール情報採取装置は、システムコール発行時にシステム
コール処理からアプリケーションタスクへ戻るリターン
アドレスを採取する手段と、前記リターンアドレスを記
憶する記憶手段と、高級言語で記述されたアプリケーシ
ョンタスクはオペレーティングシステムへシステムコー
ルを発行する高級言語インターフェースルーチンとを備
えるシステムコール情報採取装置において、前記アプリ
ケーションタスクへ戻るリターンアドレスを記憶するス
タックと、前記高級言語インターフェースルーチンを通
してシステムコールが発行されたか又は通さずに直接発
行されたかを判断する判断手段と、システムコール種別
によってシステムコールのパラメータ数を得る手段と、
前記高級言語インターフェースルーチンを通して発行さ
れた場合は前記パラメータ数により前記スタックに記憶
されているリターンアドレスを求める手段とを備えるこ
とを特徴とする。
【0014】
【作用】システムコールからアプリケーションタスクへ
のリターンアドレスを記憶する際に、システムコールが
高級言語インターフェースルーチンを通して発行された
か、高級言語インターフェースルーチンを通さず直接発
行されたかを判断し、直接発行された場合は、スタック
上に積まれているアプリケーションプログラムへのリタ
ーンアドレスを記憶手段に記憶し、高級言語インターフ
ェースルーチンを通して発行された場合はシステムコー
ル種別によってそのシステムコールのパラメータ数を得
て、そのパラメータ数を利用し、スタックの底の方に積
まれている高級言語インターフェースルーチンからアプ
リケーションプログラムへのリターンアドレスを記憶手
段に記憶する。システムコールの実行が終了すると、こ
のリターンアドレスにより制御が高級言語インターフェ
ースルーチン12へ戻り、アプリケーションタスクの実行
されたシステムコールの次の命令を実行する。
【0015】
【実施例】以下、本発明をその実施例を示す図面に基づ
いて説明する。図1は本発明に係るシステムコール情報
採取装置の第1実施例の構成を示すブロック図である。
図中7はOS (特にカーネルと呼ばれる) であり、このOS
7はユーザプログラムがOSのサービスを要求する手段と
して使用するスーパバイザ71、メモリ102 の管理を行う
メモリ管理ルーチン72、データの管理を行うデータ管理
ルーチン73、ジョブ及びプロセスの実行の制御を行うプ
ロセス管理ルーチン74並びに入出力装置の管理を行う入
出力管理ルーチン75を含む。
【0016】第1リターンアドレス採取手段8はシステ
ムコール発行時にアプリケーションタスク6, 6…への
リターンアドレスを採取し、第2リターンアドレス採取
手段10は割込み発生時にアプリケーションタスク6, 6
…へのリターンアドレスを採取する。テーブル9はこの
採取したリターンアドレスを格納するメモリ102 上のも
のである。システムコール情報表示手段11はテーブル9
の内容を表示する。高級言語インターフェースルーチン
12はシステムコールのリターンアドレスを発行する。
【0017】高級言語インターフェースルーチン通過判
断手段13は高級言語インターフェースルーチン12を通し
てシステムコールが発行されたか、高級言語インターフ
ェースルーチン12を通さず直接発行されたかを判断す
る。パラメータ数抽出手段14はシステムコール種別によ
ってシステムコールのパラメータ数を得る。
【0018】図2はアセンブラ言語で記述されたアプリ
ケーションタスクA、高級言語で記述されたアプリケー
ションタスクB、アプリケーションタスクCが直接、又
は高級言語インターフェースルーチン12を通してシステ
ムコールを発行する様子を説明する図である。アドレス
AD1 〜AD4 はアプリケーションプログラムのシステムコ
ール発行アドレス (リターンアドレス) を示し、アドレ
スAD5 は高級言語インターフェースルーチン12から発行
されるシステムコールの発行アドレス (リターンアドレ
ス) を示す。図1に示すようにアプリケーションタスク
Aは高級言語インターフェースルーチン12を通さず、ア
プリケーションタスクB, Cは高級言語インターフェー
スルーチン12を通してシステムコールを発行する。
【0019】図3(a) は高級言語インターフェースルー
チン12を呼び出した時のスタックの内容を示したもので
あり、図3(b) は高級言語インターフェースルーチン12
においてシステムコールを発行する直前のスタックの内
容である。図4はシステムコールからアプリケーション
タスク6, 6…へのリターンアドレスを採取する時のス
タックの内容を示したものであり、ここで(a) は高級言
語インターフェースルーチン12を通してシステムコール
を起動した場合、(b) は直接システムコールを起動した
場合のスタックの内容を示している。
【0020】図5は高級言語インターフェースルーチン
12のシステムコール1を発行するプログラム例を示す説
明図である。図5に示すように、システムコールの機能
コード及びパラメータをレジスタにセットし、ソフトウ
ェア割込み命令(trap)を発行することによりシステムコ
ールを実行するOS7に対して高級言語でアプリケーショ
ンタスク6, 6…を記述する。
【0021】図3, 4において、アプリケーションタス
ク6, 6…のシステムコール1 (パラメータP1, パラメ
ータP2) を実行する場合、システムコール1のパラメー
タを順番にスタックに積む。まず、SP (スタックポイン
タ) を上方に移動してそのアドレスにパラメータP2をス
タックに積む。つぎに、SPを上方に進めてパラメータP1
をスタックに積み、システムコール1の高級言語インタ
ーフェースルーチン12を起動すると、更にSPを上方に進
めてアプリケーションタスク6, 6…へのリターンアド
レス (AD1,AD2 又はAD3)をスタックに積む。
【0022】図3(a) は以上のスタックの内容を示して
いる説明図である。パラメータはレジスタに格納するの
でパラメータP2を格納するレジスタR2、パラメータP1を
格納するレジスタR1をSPを進めながら1つずつスタック
上に積み、レジスタの値をスタック上に保存する。図3
(b) はこのときのスタックの内容を示している説明図で
ある。
【0023】更にパラメータP1,P2 をレジスタR1,R2 に
格納した後に、システムコールを発行するtrap命令を実
行するとSPを上方に進めて高級言語インターフェースル
ーチン12へのリターンアドレスAD5 をスタックに積む。
図4(a) はこのときのスタックの内容を説明している。
【0024】図4(b) はアセンブリ言語で記述されたア
プリケーションタスクから高級言語インターフェースル
ーチン12を介さずに直接システムコールが起動されたと
きのスタックを示しており、パラメータは全てレジスタ
に直接格納するため、trap命令によるリターンアドレス
AD4 のみがスタック上に積まれる。
【0025】しかし、図2に示されているように高級言
語インターフェースルーチン12は複数のタスクから起動
され、スタックの一番上には高級言語インターフェース
ルーチン12のアドレスが格納され、図4(a) ではアドレ
スAD5 が格納されるため、図2において、アプリケーシ
ョンタスクB, アプリケーションタスクCが高級言語イ
ンターフェースルーチン12を介してシステムコールを起
動するとスタックには同じアドレスAD5 が格納されるの
で、このアドレスからはアプリケーションタスクBかア
プリケーションタスクCかは判断することはできない。
【0026】従って、本発明では高級言語インターフェ
ースルーチン12を介してシステムコールが起動されたか
どうかを示すフラグFLG を設け (図5参照) 、システム
コールが起動されたときにはFLG を調べてセットされて
いる場合は高級言語インターフェースルーチン12から起
動されたと判断してシステムコールの機能コードよりパ
ラメータ数 (図6参照) を得て、スタックの底に積まれ
ているアプリケーションタスク6, 6…のリターンアド
レスを求める。FLG がセットされていない場合はアセン
ブラ言語のアプリケーションタスクから高級言語システ
ムコールはパラメータをレジスタに格納して起動する。
従って、高級言語で記述されたアプリケーションタスク
6, 6…からシステムコールを起動する際には、レジス
タの操作ができないので図7のフローチャートに示すよ
うに高級言語インターフェースルーチン12を介してパラ
メータをレジスタに格納して起動する。
【0027】一方、アセンブリ言語で記述されたアプリ
ケーションタスク6, 6…はレジスタ操作ができるので
高級言語インターフェースルーチン12を介さずに直接起
動する。システムコールが起動されるとスタック上に起
動したアプリケーションタスク6, 6…のアドレス〔図
7では高級言語インターフェースルーチン内のシステム
コールを発行する(ST5) 次のアドレス、図8ではアプリ
ケーションタスク6,6…のシステムコールを発行する
(ST12)次のアドレス〕が格納される。システムコールを
直接発行する場合、スタックの一番上にアプリケーショ
ンタスク6, 6…のアドレスが格納されているのでアプ
リケーションタスク6, 6…のシステムコール発行アド
レスが容易に判断できる。例えば図2のアドレスAD4 か
ら起動すると図4(b) のスタックの一番上にはアドレス
AD4 が格納される。
【0028】次に、高級言語インターフェースルーチン
12を通してシステムコールを発行する場合について本発
明装置の動作を図7のフローチャートに基づいて説明す
る。アプリケーションタスク6, 6…からシステムコー
ルを発行する(ST1) 。ここでは図2に示すように、高級
言語で記述されたアプリケーションタスクB又はアプリ
ケーションタスクCのあるアドレス (ここではアドレス
AD1 〜AD3)からパラメータを2つ持つシステムコール1
が発行された場合について説明する。
【0029】即ち、アドレスAD1 〜AD3 にあるシステム
コール1 (パラメータP1, パラメータP2) が実行される
と、図5に示すような高級言語インターフェースルーチ
ン12を起動する(ST2) 。このような高級言語インターフ
ェースルーチン12は各システムコール毎に一つ存在す
る。
【0030】図3(a) に高級言語インターフェースルー
チン12起動時のスタックの内容が示されている。スタッ
クにはシステムコール1のパラメータP1とパラメータP2
とシステムコールを発行したアプリケーションプログラ
ムのアドレスが積まれている。本例では、システムコー
ルを発行したアプリケーションプログラムのアドレスと
は、図2におけるアドレスAD1 〜AD3 のどれかである。
高級言語インターフェースルーチン12の中で、高級言語
インターフェースルーチン12からシステムコールが発行
されたことを示すフラグ(FLG) をセットする(ST3) 。シ
ステムコールのパラメータをレジスタR1とレジスタR2に
セットするため、レジスタR2とレジスタR1の内容をスタ
ックにセーブし、システムコール1の機能コードをレジ
スタR0にセットする(ST4) 。この時のスタックの内容を
図3(b) に示す。trap命令でソフトウェア割込みを発生
させ、システムコールを発行する(ST5) 。
【0031】図8にステップST5 のサブルーチンのフロ
ーチャートを示す。システムコールからアプリケーショ
ンタスク6, 6…へのリターンアドレスの採取を行う。
システムコール発行後のスタックの内容を図4(a) に示
す。図6はシステムコールの機能コードとそのシステム
コールのパラメータ数を対としたデータである。FLGに
“1”がかセットしてあるので、高級言語インターフェ
ースルーチン12からシステムコールが発行されたと判断
し、図6に示すようなシステムコールの機能コードとそ
のシステムコールのパラメータ数を対としたデータを参
照し、システムコールの機能コードよりシステムコール
のパラメータ数を得る(ST11)。
【0032】本実施例1ではシステムコール1のパラメ
ータ数は“2”である。システムコールからアプリケー
ションタスクへのリターンアドレスとして図4(a) に示
すリターンアドレスAD5 をメモリ上のテーブル9にセー
ブすると、アプリケーションタスクのどこからシステム
コール1が発行されたか分からない。ここで欲しい情報
はシステムコールがアプリケーションタスクのどこから
発行されたかである。そこでスタックの下の方にセーブ
されているリターンアドレス (AD1,AD2 又はAD3)をメモ
リ102 上のテーブル9にセーブする(ST12)。つまり (ス
タックポインタ(SP)+パラメータ数×4+4) のアドレ
スの内容をテーブル9にセーブする。
【0033】次いでスーパバイザ71に制御を渡す(ST1
4)。スーパバイザ71は割込みの種類を解析し(ST15)、割
込みの種類、割り込まれたタスクなどの情報をテーブル
9に格納する(ST16)。スーパバイザ71は割込み処理を実
行するためにメモリ管理ルーチン72、データ管理ルーチ
ン73、プロセス管理ルーチン74及び入出力管理ルーチン
75に制御を渡す(ST17)。システムコールが終了すると、
制御が高級言語インターフェースルーチン12に戻ってく
る。高級言語インターフェースルーチン12においてスタ
ック上にセーブしてあったレジスタ値を元に戻す(ST1
8)。高級言語インターフェースルーチン12からの発行を
示すFLG を0にクリアする(ST19)。
【0034】次に、高級言語インターフェースルーチン
12を通さず直接システムコールを発行する場合について
図7に基づいて説明する。ここでは図2に示すように、
アセンブリ言語で記述されたアプリケーションタスクA
(アドレスAD4)からパラメータを2つ持つシステムコー
ル1が発行されたときについて説明する。まず、FLGを
0にセットし(ST6) 、機能コード、パラメータをセット
し(ST7) 、システムコールを発行するサブルーチンを実
行する(ST8) 。システムコールを発行するサブルーチン
を実行する場合、FLG は0にセットされているため、高
級言語インターフェースルーチン12を通さず直接システ
ムコールが発行されたと判断し、図4(b) に示すスタッ
クに積まれているリターンアドレスAD4 をテーブル9に
セーブし(ST13)、スーパバイザ71に制御を渡し(ST14)、
システムコールの命令を解釈し(ST15)、システムコール
パラメータ及びシステムコール発行タスクのシステムコ
ール情報を採取し、メモリ102 上のテーブル9に格納す
る(ST16)。
【0035】スーパバイザ71は割込み処理を実行するた
めにメモリ管理ルーチン72、データ管理ルーチン73、プ
ロセス管理ルーチン74及び入出力管理ルーチン75に制御
を渡す(ST17)。システムコールが終了すると制御はアプ
リケーションタスク6, 6…に戻る。上述したようにメ
モリ102 上のテーブル9にセーブされるアプリケーショ
ンプログラムのアドレスはAD1 〜AD4 であり、アドレス
AD5 がセーブされることはない。なお、テーブル9にセ
ーブされたシステムコール情報が知りたいときは、シス
テムコール情報表示手段11を用いてテーブル9を検索
し、内容を表示させる。
【0036】例えば、エラー情報を表示させる場合は、
“show error”コマンドを本発明装置に入力する。これ
によってエラー発生タスク、エラー発生アドレス及びそ
のシステムコールを発行したアプリケーションタスク
6, 6…のアドレスが表示される。また、アプリケーシ
ョンタスク6, 6…のシステムコール発行状況を表示さ
せる場合は、“showアプリケーションタスク名”コマン
ドを本発明装置に入力する。これによってシステムコー
ル情報表示手段11は発行システムコールの種類、システ
ムコールのパラメータ、アプリケーションタスク6, 6
…のシステムコールを発行したアドレスなどを表示す
る。
【0037】システムコール実行中にエラーが発生した
場合は、従来例と同じくエラーが発生した時点で採取で
きるエラー情報 (エラー発生アドレス、エラー発生タス
クなど) を採取し、メモリ上のテーブル9に追加する。
また、割込みが発生した場合、スタック上にセーブされ
ているリターンアドレスを採取し、採取したアドレスを
テーブル9に格納する。スーパバイザ71は制御を渡さ
れ、スーパバイザ71は割込みの種類を解析し、割込みの
種類、割り込まれたタスクなどの情報をテーブル9に格
納する。
【0038】上記実施例では高級言語インターフェース
ルーチン12の通過を判断するのにフラグFLG を用いた
が、図9、図10に示すように、高級言語インターフェー
スルーチン12へのリターンアドレスをテーブルとして持
ち、高級言語インターフェースルーチン12を通してシス
テムコールが発行されたか否かを判断するために、図4
(a) のスタックの先頭にセーブされているアドレス (図
4(a) ではアドレスAD5)が本テーブルにセーブされてい
るアドレスのどれかと一致するか否かを調べてもよい。
一致すれば高級言語インターフェースルーチン12を通し
てシステムコールが発行されたと判断する。
【0039】図11は本発明装置の第2実施例の構成を示
すブロック図である。この実施例は高級言語インターフ
ェースルーチン12の通過を判断する手段をシステムコー
ル情報表示手段11を備える点で第1実施例と異なる。図
1の第1実施例と対応する部分には同一符号を付してそ
の説明を省略する。
【0040】図12は高級言語インターフェースルーチン
12のプログラム例を示す。高級言語からシステムコール
1 (パラメータP1, パラメータP2) が実行されると、こ
の高級言語インターフェースルーチン12を発行する。こ
の時点のスタックの内容は図3(a) である。発行された
高級言語インターフェースルーチン12においてシステム
コールのパラメータをレジスタR1とレジスタR2にセット
するため、レジスタR1とレジスタR2の内容をスタックに
格納し、システムコール1の機能コードをレジスタR0に
セットする。つぎに、trap命令を用いてシステムコール
を発行する。
【0041】図13は高級言語インターフェースルーチン
12を通してシステムコールを発行する場合の第2実施例
のフローチャートである。アプリケーションタスク6,
6点からシステムコールを発行し(ST21)、高級言語イン
ターフェースルーチン12を発行する(ST22)。つぎに、レ
ジスタのセーブ、機能コード、パラメータのレジスタへ
のセットを行い(ST23)、trap命令を用いてシステムコー
ルを発行する(ST24)。スタックに積まれているリターン
アドレスをテーブル9に保存する。図6に示すようにシ
ステムコールの機能コードとそのシステムコールのパラ
メータ数を対にしたデータからシステムコールのパラメ
ータ数を得る(ST26)。
【0042】実施例1と同様にスタックの下の方にセー
ブされているリターンアドレス (AD1,AD2 又はAD3)をメ
モリ上のテーブル9 (図15の領域2) にセーブする(ST2
7)。従来例と同様に、システムコール情報を採取し、そ
の情報をメモリ上のテーブル9に追加した後スーパバイ
ザ71に制御を渡し(ST28)、システムコールの命令を解釈
し(ST29)、システムコールパラメータ及びシステムコー
ル発行タスクのシステムコール情報を採取し、テーブル
9にセーブする(ST30)。スーパバイザ71は割込み処理を
実行するためにメモリ管理ルーチン72、データ管理ルー
チン73、プロセス管理ルーチン74及び入出力管理ルーチ
ン75に制御を渡す(ST31)。システムコールが終了すると
制御はアプリケーションタスクAに戻る。システムコー
ル終了後、高級言語インターフェースルーチン12に戻っ
てくる。高級言語インターフェースルーチン12において
レジスタ値を復帰する(ST32)。
【0043】図14は高級言語インターフェースルーチン
12を通さず直接システムコールを発行する場合の第2実
施例のフローチャートである。実施例1と同様に図2の
アセンブリ言語で記述されたアプリケーションタスクA
からパラメータを2つ持つシステムコール1が発行され
た場合について説明する。機能コード、パラメータをレ
ジスタにセットする(ST33)。システムコールを発行する
(ST34)。実施例1と同様にシステムコール発行後のスタ
ックの内容は図4(b) である。スタックに積まれている
リターンアドレス (図4(b) のリターンアドレスAD4)を
メモリ上のテーブル9 (図15の領域1) にセーブする(S
T35)。図6に示すようなシステムコールの機能コードと
そのシステムコールのパラメータ数を得る(ST36)。スタ
ックの下の方にセーブされている値 (不定値) をメモリ
上のテーブル9 (図15の領域2)にセーブする(ST37)。
従来例と同様に、システムコール情報を採取し、その情
報をメモリ102 上のテーブル9に追加し、スーパバイザ
71に制御を渡し(ST38)、システムコールの命令を解釈し
(ST39)、システムコールパラメータ及びシステムコール
発行タスクのシステムコール情報を採取し、テーブル9
にセーブする(ST40)。スーパバイザ71は割込み処理を実
行するためにメモリ管理ルーチン72、データ管理ルーチ
ン73、プロセス管理ルーチン74及び入出力管理ルーチン
75に制御を渡す(ST41)。システムコールが終了すると制
御はアプリケーションタスクAに戻る。
【0044】図17(a) に高級言語インターフェースルー
チン12を通してシステムコールを発行した後のメモリ上
のテーブル9の内容を示す。また図17(b) にシステムコ
ールを直接起動した後のメモリ上のテーブル9の内容を
示す。図17においてアドレスAD1 〜AD5 は図2のもので
ある。
【0045】システムコール実行中にエラーが発生した
場合は、実施例1と同様にエラーが発生した時点で採取
できるエラー情報 (エラー発生アドレス、エラー発生タ
スクなど) を採取し、メモリ102 上のテーブル9にセー
ブする。また、割込みが発生した場合の処理も従来例と
同じである。
【0046】以下、システムコール情報の表示方法を図
18に示すフローチャートを基に説明する。エラー情報を
得る場合は“show error”コマンドをシステムコール情
報表示手段11に入力する。システムコール情報表示手段
11はテーブル9よりエラー情報を検索する(ST41)。エラ
ー情報の中のエラー発生タスク名より図16の表を利用し
て高級言語インターフェースルーチン12が起動されたか
否かを判断する(ST42)。高級言語インターフェースルー
チン12が起動された場合は、メモリ上のテーブル9の領
域2 (図15) に格納されているリターンアドレス (図17
(a) のリターンアドレスAD1,AD2 又はAD3)を使用して、
エラー発生タスク、エラー発生アドレスなどのエラー情
報を表示する(ST44)。高級言語インターフェースルーチ
ン12を起動せずシステムコールが発行された場合は、メ
モリ上のテーブル9の領域1 (図15)に格納されている
リターンアドレス (図17(b) のリターンアドレスAD4)を
使用してエラー情報を表示する(ST45)。また、アプリケ
ーションタスクのシステムコール発行状況が知りたい場
合は例えば、“showアプリケーションタスク名”をシス
テムコール情報表示手段11に入力する。上述した方法を
用いて同様にシステムコール情報表示手段11は発行シス
テムコールの種類、システムコールのパラメータ、アプ
リケーションタスクのシステムコールを発行したアドレ
スなどを表示する。
【0047】また、実施例1、実施例2ではアプリケー
ションプログラムのシステムコール発行アドレスを含む
システムコール情報を提供するものである。アプリケー
ションプログラムが高級言語で記述してあり、図20のよ
うに関数をいくつかコールした後にシステムコールを発
行して、図19に示すようなスタックフレームを形成する
場合は、フレームポインタ(FP)をたどっていけばfunc
1(),func2(),func3() がコールされた後にシステムコー
ル1が発行されたことが分かる。実施例1、実施例2に
おいてこの情報もシステムコール情報として採取しても
よい。
【0048】
【発明の効果】以上のように、本発明による場合はシス
テムコールが発行されたアプリケーションタスクの正確
なアドレス、正常に終了したときのシステムコール情
報、エラーが発生したときのシステムコール情報を得る
ことができるため、OS上で動作するアプリケーションプ
ログラムの動作の解析、デバッグが容易になるという優
れた効果を奏する。
【図面の簡単な説明】
【図1】本発明のシステムコール情報採取装置の第1実
施例のソフトウェア構成図である。
【図2】システムコールを発行の様子の説明図である。
【図3】スタックの内容の説明図である。
【図4】スタックの内容の説明図である。
【図5】高級言語インターフェースルーチン12の説明図
である。
【図6】システムコールの機能コードとそのシステムコ
ールのパラメータ数との対応を表す説明図である。
【図7】本発明装置の動作を示すフローチャートであ
る。
【図8】システムコールを発行するサブルーチンのフロ
ーチャートである。
【図9】システムコールを発行の様子の説明図である。
【図10】リターンアドレスのリストを示す説明図であ
る。
【図11】本発明のシステムコール情報採取装置の第2
実施例のソフトウェア構成図である。
【図12】高級言語インターフェースルーチンの説明図
である。
【図13】本発明装置の動作を示すフローチャートであ
る。
【図14】本発明装置の動作を示すフローチャートであ
る。
【図15】第2実施例でのテーブルの内容を示す説明図
である。
【図16】タスク名とそのタスクが高級言語インターフ
ェースルーチンを通してシステムコールを起動するか否
かを示す説明図である。
【図17】テーブルの内容を示す説明図である。
【図18】システムコール情報の表示に係る動作を示す
フローチャートである。
【図19】スタックフレームの説明図である。
【図20】アプリケーションタスクの例を示す説明図で
ある。
【図21】従来のシステムコール情報採取装置のソフト
ウェア構成図である。
【図22】アプリケーションタスクがOSサービスを要求
する場合のフローチャートである。
【図23】割込みが発生した場合のフローチャートであ
る。
【図24】エラーが発生した場合の処理を示すフローチ
ャートである。
【図25】システムコールを発行するプログラムのリス
トを示す説明図である。
【図26】システムコールを発行の様子の説明図であ
る。
【図27】システムコール情報採取装置のハードウェア
構成図である。
【符号の説明】
6 アプリケーションタスク 7 OS 8 リターンアドレス採取手段 (システムコール) 9 テーブル 10 リターンアドレス採取手段 (割込み) 11 システムコール情報表示手段 12 高級言語インターフェースルーチン 13 高級言語インターフェースルーチン通過判断手段 14 パラメータ数抽出手段 71 スーパバイザ 72 メモリ管理ルーチン 73 データ管理ルーチン 74 プロセス管理ルーチン 75 入出力管理ルーチン
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成6年4月11日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0013
【補正方法】変更
【補正内容】
【0013】
【課題を解決するための手段】本発明に係るシステムコ
ール情報採取装置は、システムコール発行時にシステム
コール処理からアプリケーションタスクへ戻るリターン
アドレスを記憶するスタックと、前記スタックからリタ
ーンアドレスを採取する手段と、高級言語で記述された
アプリケーションタスクオペレーティングシステムへ
システムコールを発行する際に使用する高級言語インタ
ーフェースルーチンとを備えるシステムコール情報採取
装置において、前記アプリケーションタスクへ戻るリタ
ーンアドレスを記憶する記憶手段と、前記高級言語イン
ターフェースルーチンを通してシステムコールが発行さ
れたか又は通さずに直接発行されたかを判断する判断手
段と、システムコール種別によってシステムコールのパ
ラメータ数を得る手段と、前記高級言語インターフェー
スルーチンを通して発行された場合は前記パラメータ数
により前記スタックに記憶されているリターンアドレス
を求める手段とを備えることを特徴とする。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 システムコール発行時にシステムコール
    処理からアプリケーションタスクへ戻るリターンアドレ
    スを採取する手段と、前記リターンアドレスを記憶する
    記憶手段と、高級言語で記述されたアプリケーションタ
    スクはオペレーティングシステムへシステムコールを発
    行する高級言語インターフェースルーチンとを備えるシ
    ステムコール情報採取装置において、 前記アプリケーションタスクへ戻るリターンアドレスを
    記憶するスタックと、前記高級言語インターフェースル
    ーチンを通してシステムコールが発行されたか又は通さ
    ずに直接発行されたかを判断する判断手段と、システム
    コール種別によってシステムコールのパラメータ数を得
    る手段と、前記高級言語インターフェースルーチンを通
    して発行された場合は前記パラメータ数により前記スタ
    ックに記憶されているリターンアドレスを求める手段と
    を備えることを特徴とするシステムコール情報採取装
    置。
JP5322584A 1993-12-21 1993-12-21 システムコール情報採取装置 Pending JPH07182182A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP5322584A JPH07182182A (ja) 1993-12-21 1993-12-21 システムコール情報採取装置
US08/359,387 US5615332A (en) 1993-12-21 1994-12-20 Debugging aid apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5322584A JPH07182182A (ja) 1993-12-21 1993-12-21 システムコール情報採取装置

Publications (1)

Publication Number Publication Date
JPH07182182A true JPH07182182A (ja) 1995-07-21

Family

ID=18145327

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5322584A Pending JPH07182182A (ja) 1993-12-21 1993-12-21 システムコール情報採取装置

Country Status (2)

Country Link
US (1) US5615332A (ja)
JP (1) JPH07182182A (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2692609B2 (ja) * 1994-09-26 1997-12-17 日本電気株式会社 マルチタスクのプログラムデバッグ方法とその装置
US6275868B1 (en) * 1997-03-12 2001-08-14 Microsoft Corporation Script Engine interface for multiple languages
US6353923B1 (en) * 1997-03-12 2002-03-05 Microsoft Corporation Active debugging environment for debugging mixed-language scripting code
US5892941A (en) 1997-04-29 1999-04-06 Microsoft Corporation Multiple user software debugging system
US5903759A (en) * 1997-06-04 1999-05-11 3 Com Corporation Software performance analysis using hardware analyzer
US6311327B1 (en) * 1998-03-02 2001-10-30 Applied Microsystems Corp. Method and apparatus for analyzing software in a language-independent manner
US6973417B1 (en) 1999-11-05 2005-12-06 Metrowerks Corporation Method and system for simulating execution of a target program in a simulated target system
US7720214B2 (en) * 2005-02-22 2010-05-18 International Business Machines Corporation Call center study method and system
JP5163220B2 (ja) * 2008-03-26 2013-03-13 富士通株式会社 キャッシュ制御装置、情報処理装置
US9003377B2 (en) * 2010-01-07 2015-04-07 Microsoft Technology Licensing, Llc Efficient resumption of co-routines on a linear stack
US9304857B2 (en) * 2011-12-12 2016-04-05 Cleversafe, Inc. Retrieving data from a distributed storage network

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0731615B2 (ja) * 1986-04-18 1995-04-10 日本電気株式会社 情報処理装置
GB2197506A (en) * 1986-10-27 1988-05-18 Burr Brown Ltd Providing and handling break points in a software monitor
US5134701A (en) * 1989-02-10 1992-07-28 Hewlett-Packard Co. Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities
JPH02271436A (ja) * 1989-04-13 1990-11-06 Mitsubishi Electric Corp エラー情報採取装置
US5124989A (en) * 1990-01-08 1992-06-23 Microsoft Corporation Method of debugging a computer program
US5265254A (en) * 1991-08-14 1993-11-23 Hewlett-Packard Company System of debugging software through use of code markers inserted into spaces in the source code during and after compilation

Also Published As

Publication number Publication date
US5615332A (en) 1997-03-25

Similar Documents

Publication Publication Date Title
US7028291B2 (en) Debugging method and debugging device
EP0632377B1 (en) Method for testing a message-driven operating system
Emer et al. A Characterization of Processor Performance in the VAX-11/780
KR100317770B1 (ko) 데이터처리시스템의에뮬레이션모드를위한어드레스변환버퍼
US6634023B1 (en) Compile method, exception handling method and computer
US6637025B1 (en) Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file
JP2000235511A (ja) アプリケーションプログラムのパフォーマンス解析方法、アプリケーションプログラムのパフォーマンス解析に用いられるシステム及び装置
US8020154B2 (en) Precise handling of exceptions during program code conversion
JPH0810440B2 (ja) アプリケーション イベント収集方法
WO2000045257B1 (en) Executing programs for a first computer architecture on a computer of a second architecture
KR19990029287A (ko) 데이터 처리 시스템 에뮬레이션 모드에서의 간접 무조건 브랜치
KR19990029288A (ko) 데이터 처리 시스템에서 에뮬레이션 동안의 브랜치 처리 방법 및 시스템
KR19990029289A (ko) 데이타 처리 시스템의 에뮬레이션 동안의 인터럽트 처리 방법 및 시스템
US5887169A (en) Method and apparatus for providing dynamic entry points into a software layer
US20030005022A1 (en) Methods and apparatus for implementing a progress reporting interface
US5615332A (en) Debugging aid apparatus
US5463764A (en) Method and system for system debugging through a keyboard device driver
US6289448B1 (en) Method, apparatus and computer program product for debugging a computer's boot process
US6820254B2 (en) Method and system for optimizing code using an optimizing coprocessor
Emer et al. A Characterization of Processor Performance in the VAX-11/780
JP3538292B2 (ja) 実行時プログラム翻訳方法
US20070156386A1 (en) Linearization of page based memory for increased performance in a software emulated central processing unit
JP2003022201A (ja) プログラムのデバッグ方法
CA2275169A1 (en) Computer system
JPH06110857A (ja) プログラムディスパッチ方式