JP2007149089A - 代替関数ライブラリを備えるソフトウェアプログラム - Google Patents

代替関数ライブラリを備えるソフトウェアプログラム Download PDF

Info

Publication number
JP2007149089A
JP2007149089A JP2006314430A JP2006314430A JP2007149089A JP 2007149089 A JP2007149089 A JP 2007149089A JP 2006314430 A JP2006314430 A JP 2006314430A JP 2006314430 A JP2006314430 A JP 2006314430A JP 2007149089 A JP2007149089 A JP 2007149089A
Authority
JP
Japan
Prior art keywords
routine
program
library
compilation
source code
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.)
Withdrawn
Application number
JP2006314430A
Other languages
English (en)
Inventor
Alan Howard Davis
ハワード デェイヴィス アラン
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.)
Verigy Singapore Pte Ltd
Original Assignee
Verigy Singapore Pte Ltd
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 Verigy Singapore Pte Ltd filed Critical Verigy Singapore Pte Ltd
Publication of JP2007149089A publication Critical patent/JP2007149089A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】プログラムを再コンパイルすることなく、必要に応じてデバッグライブラリ関数又は動作モードライブラリ関数にリンク又は再リンクできる。
【解決手段】プログラム135が第1モードでリンクされた場合には、第1ライブラリ235aからの第1コンパイルルーチン240aが関数呼出しに連結され、プログラム135が第1モードでリンクされない場合には、第2ライブラリ235bからの第2コンパイルルーチン240bが関数呼出しに連結される。第1コンパイルルーチン240aは、ソースコードルーチン中のパラメータが第1の値に設定されたソースコードルーチンからコンパイルされ、第2コンパイルルーチン240bは、ソースコードルーチン中のパラメータが第2の値に設定されたソースコードルーチンからコンパイルされる。
【選択図】図3

Description

本発明は、代替関数ライブラリを備えるソフトウェアプログラム及びその作成方法に関する。
最新の製品の性能を、その仕様に対する適合性に関して評価するためのテスト及び測定が、製品の開発と製造のライフサイクルの重要な一部分となっている。かかるテストを行うテストマシンは、多くの場合コンピュータ制御の下で自動化して、様々なシステム又は要素の少なくとも一方について1つ以上の多様なテストを行うことができる。
ユーザは、かかるテストマシンを使用して、上記のようなテストを実行するのに必要なソフトウェアプログラムを作成しなければならない場合がある。ソフトウェアプログラマの労力を軽減するために、テストマシンの製造業者は、ソフトウェアプログラムに使用することのできる共通機能のライブラリを提供することが多い。すべてのソフトウェアプログラムと同様、プログラムが設計通りに機能することを保証するために、必要に応じてプログラム自体をテストして変更することが求められる。プログラム内に存在する可能性のあるエラーを発見して修正することを、プログラムをデバッグするという。この作業では、プログラムをデバッグモードでコンパイルすることがよくあるが、この場合、任意のエラーの種類及びプログラム位置の識別において使用する情報をソフトウェアプログラマに提供する更なるプログラミングステップがプログラムに追加される。この作業には時間と経費を要することが多い。
プログラムが正確に機能し、使用可能な状態であることがソフトウェアプログラマの要求通りであれば、デバッグに使用する追加的なプログラミングステップを踏むことなく、プログラムの操作の実行速度を高めるためのプログラムの再コンパイルが行われる。ソフトウェアプログラマは、ライブラリ関数によってソフトウェアプログラムに報告されるスタックオーバーフロー又はエラー等の様々な潜在的なプログラムの問題についてチェックしないことも多いが、プログラムが正確に機能するとプログラマが思っても、状況によってはそうでない場合もある。さらに、ライブラリ関数のうちの1つに関する問題を、後のソフトウェアのリリースの段階で製造業者が検出し、修正するということもある。ライブラリ関数のこの新たなバージョンを使用することで、ソフトウェアプログラマ又はユーザによって事前に検出されることのなかったプログラムの問題を表面化させることができる。
代表的な実施形態では、関数呼出しを含むソフトウェアプログラムを開示する。プログラムが第1モードでリンクされる場合には、第1ライブラリからの第1コンパイルルーチンが関数呼出しに連結される。プログラムが第1モードでリンクされない場合には、第2ライブラリからの第2コンパイルルーチンが関数呼出しに連結される。第1コンパイルルーチンは、ソースコードルーチン中のパラメータが第1の値に設定されるソースコードルーチンからコンパイルされ、第2コンパイルルーチンは、ソースコードルーチン中のパラメータが第2の値に設定されるソースコードルーチンからコンパイルされる。第1コンパイルルーチンは、第2コンパイルルーチンと同じ機能に加えて追加的な機能を有する。
別の代表的な実施形態では、第1ライブラリと第2ライブラリを含む一対のライブラリを開示する。第1ライブラリは第1コンパイルルーチンを含み、第2ライブラリは第2コンパイルルーチンを含む。第1コンパイルルーチンは、ソースコードルーチン中のパラメータが第1の値に設定されるソースコードルーチンからコンパイルされ、第2コンパイルルーチンは、ソースコードルーチン中のパラメータが第2の値に設定されるソースコードルーチンからコンパイルされる。第1コンパイルルーチンは、第2コンパイルルーチンと同じ機能に加えて追加的な機能を有する。
さらに別の代表的な実施形態では、ソフトウェアプログラムを作成する方法を開示する。該方法はプログラムをリンクするモードを特定するステップを含み、プログラムのソースコードは関数呼出しを含む。モードを特定するステップにおいて第1モードが特定される場合には、第1ライブラリからの第1コンパイルルーチンのオブジェクトコードを、プログラムの以前にコンパイルされる形式で関数呼出しに連結することによって、プログラムの実行可能形式を作成する。モードを特定するステップにおいて第1モードが特定されない場合には、第2ライブラリからの第2コンパイルルーチンのオブジェクトコードを、プログラムの以前にコンパイルされる形式で関数呼出しに連結することによって、プログラムの実行可能形式を作成する。第1コンパイルルーチンは、第2コンパイルルーチンと同じ機能に加えて追加的な機能を有する。
本明細書中に示す代表的な実施形態の他の態様及び利点は、添付の図面を参照する以下の詳細な説明から明らかとなろう。
添付の図面は、様々な代表的実施形態をより詳しく説明するための視覚的な表示を提供するものであり、当業者はそれらの図面を利用することで、本発明の様々な代表的実施形態及びその特有の利点をより良く理解できよう。尚、図面中、対応する要素には同じ参照番号を付す。
例示を目的とした図面に示すように、本明細書は代替ライブラリにおける関数呼出しを含むソフトウェアプログラムに対する新規の技術を開示するが、このプログラムはデバッグモードと動作モードの両方でコンパイルすることができる。デバッグモードのコンパイル関数はデバッグライブラリで提供され、動作モードのコンパイル関数は別のライブラリで提供される。次に、ソフトウェアプログラムは、必要に応じてソフトウェアプログラムを再コンパイルすることなく、必要に応じてデバッグライブラリ関数又は動作モードライブラリ関数のいずれかにリンク又は再リンクできる。ライブラリ関数の呼出しの成功又は失敗は、ユーザが開発したソフトウェアプログラムを変更及び再コンパイルすることなく、監視することができる。このようなデバッグ作業の以前の方法は、ユーザの開発したソフトウェアプログラムに対してデバッグコードをアクティブにすること又はデバッグコードを追加することの少なくとも一方を行い、その後ソフトウェアプログラムの再コンパイルとリンクを行うことによるものであった。
以下の詳細な説明及び図面においては、同じ要素には同じ参照番号を付して示す。
図1は、様々な代表的実施形態で説明するテストシステム100のブロック図である。図1において、テストシステム100は被測定装置(DUT)150に接続されるテストマシン105を含む。被測定装置(DUT)150は、様々な種類の電子的要素、又は例えば機械的要素のような任意の他の種類の要素であってもよい。テストマシン105は、コンピュータ110と機器115とを含む。図1には、コンピュータ110に外部から接続される任意の外部出力装置145も示されている。外部出力装置145は、例えばプリンタである。コンピュータ110は機器115に接続され、テスト測定が行われる条件を設定すること、測定を始めること、及び測定結果を収集することによって、機器115の動作を制御する。図1に示す機器115は、電圧計、流速計等の単一機器を表すものであっても、又は多様な測定及び測定の種類を行うことのできる個々の機器の組合せを表すものであってもよい。
コンピュータは中央処理装置(CPU)120、メモリ125、入力装置130、及び内部出力装置140を含む。入力装置130は、キーボード、又はペン、マウス、トラックポイント、またはタッチスクリーン等の、カーソル操作等に適当なポインティグデバイスであってもよく、内部出力装置140はモニタであり得る。モニタはモノクロであってもカラーであってもよい。コンピュータ110は、DOS、マイクロソフトウィンドウズの各バージョン(ウィンドウズ95、98、Me、2000、NT、XP等(登録商標))、アップルコンピュータのMAC OSX、UNIX、Linux(登録商標)、又はその他の適当なオペレーティングシステム等の、市販されている任意のオペレーティングシステムのうちの1つ以上を実行することができる。動作中、実行可能ソフトウェアテストプログラム135(本明細書中ではソフトウェアテストプログラム135及びテストプログラム135とも称すが、一般的にはソフトウェアプログラム135及びプログラム135とも称する)は、メモリ125又は外部ソース(図示せず)からCPU120にロードされる。
他の実施においては、テストシステム100が複数のCPU120を含んでもよいが、これらCPU120のすべてが同じテスト機能を実行しなくてもよい。また、それら複数のCPU120は他の入力/出力装置に取り付けてもよく、図1に示す様々な入力/出力装置に取り付けなくてもよい。
図2は、様々な代表的実施形態で説明する、プログラムソースコード要素205を実行可能ソフトウェアプログラム135に変換することに用いられる要素及びプロセス200のブロック図である。図2において、コンパイラ215はプログラムソースコード要素205をプログラムオブジェクトコードモジュール220にコンパイルする。プログラムソースコード要素205は、本明細書中で一般に関数呼出し210とも称するテスタ関数呼出し210を含み、該関数呼出し210はテストマシン105に標準の関数呼出しであり、かかる関数のライブラリで発見される。かかる関数のライブラリは、テストマシン105の製造業者によって提供されるのが一般的であるが、プログラムソースコードルーチンはユーザの特定の目的のためにテストマシン105のユーザが作成する。リンカー225は、プログラムオブジェクトコードモジュール220をスタブライブラリ250と結合又はリンクし、該スタブライブラリ250は図3に示すように、ライブラリルーチンに対するオブジェクトコードを連結するために使用できる。スタブライブラリ250の使用以外の方法、例えばコンパイルテスタルーチン240a、240bをプログラム135内の関数呼出し210に直接連結する方法を使用して、関数呼出し210に応じることができる。
図3は、様々な代表的実施形態において説明する、2つのライブラリ235a、235bのうちの1つからルーチンを呼び出す際にソフトウェアプログラム135が使用する要素及びプロセスのブロック図である。図2及び3の両図を参照すると、リンカー225は、本明細書中でモードと称する2つの形式のうちの1つで実行可能ソフトウェアテストプログラム135を作成する。実行可能ソフトウェアテストプログラム135が、本明細書中で第1モードと称するデバッグモードでリンクされると、テスタ関数呼出し210はデバッグライブラリ235aからの第1コンパイルテスタルーチン240aに連結される。第1コンパイルテスタルーチン240aは、本明細書中では一般に第1コンパイルルーチン240aと称し、デバッグライブラリ235aは本明細書中では一般に第1ライブラリ235aとも称する。実行可能ソフトウェアテストプログラム135が、本明細書中で第2のモードと称する動作モードでリンクされると、テスタ関数呼出し210は動作ライブラリ235bからの第2コンパイルテスタルーチン240bに置き換えられる。第2コンパイルテストルーチン240bは本明細書中で一般に第2コンパイルルーチン240bと称し、また動作ライブラリ235bは、本明細書中では一般に第2ライブラリ235bとも称する。このように、ソフトウェアテストプログラムをリンクする際に選択されるモードによって、2つのライブラリ235a、235bのうちの1つがソフトウェアテストプログラム135に連結される。
実際には、テスタ関数呼出し210に対する呼出しにはスタブライブラリを介して応じるが、このスタブライブラリはコンピュータ110のオペレーティングシステム260に位置するのが一般的であると共に、ユーザによるリンク時に選択されたモードによって、第1スタブ251を使用して、アドレステーブル255から第1ライブラリ235a中の第1コンパイルテスタルーチン240aのアドレスを得る。又は、第2のスタブ252を使用して、アドレステーブル255から第2ライブラリ235b中の第2コンパイルテスタルーチン240bのアドレスを得る。第1コンパイルテスタルーチン240aは、第2コンパイルテスタルーチン240bの機能に追加的な機能を備える。代表的な実施形態では、第1コンパイルテスタルーチン240aの追加的な機能は、ソフトウェアテストプログラム135をデバッグするための情報を提供するものである。第1コンパイルルーチン240a及び第2コンパイルルーチン240bは、オペレーティングシステム260に位置される内部ルーチン265への呼出しを行う。ここで開示する技術は、様々な種類の複数の関数呼出し210を有するソフトウェアプログラム135に適用できる。スタブライブラリ250を使用するのではなく、例えば、リンク時にコンパイルテスタルーチン240a、240bのうちの1つをプログラムオブジェクトコードモジュール220とリンクする等の、他の技術を使用してもよい。スタブライブラリ250とアドレステーブル255を使用する以外の技術を使用して関数呼出し210に応じることもできるが、アドレステーブル255における機能アドレスルックアップと共にスタブライブラリ250を使用すれば、使用するオペレーティングシステムの更新に依存せずに、ルーチンに対する呼出しを容易にすることができる。
図4は様々な代表的実施形態で説明する第1コンパイルルーチン240aと第2コンパイルルーチン240bに対するソースコードルーチン300のリストである。第2コンパイルテスタルーチン240bは、ソースコードルーチン300中のパラメータ310(本例では「DEBUG」)が第2の値(本例ではNULL)に設定されたソースコードルーチン300からコンパイルされる。第1コンパイルテスタルーチン240aは、ソースコードルーチン300中のパラメータ310が第1の値に設定されたソースコードルーチン300からコンパイルされるが、この第1の値により、第1コンパイルテスタルーチン240aは第2コンパイルテスタルーチン240bの機能に加えて追加的な機能を有することとなる。またこの代表的な例ではパラメータ310は「DEBUG」であるが、第1コンパイルテスタルーチン240aのコンパイルに対しては、DEBUGの値はNULLではない値を有する。
第2コンパイルテスタルーチン240bの機能に追加された第1コンパイルテストルーチン240aの機能は、“SCheckStack()”への呼出しを介してルーチンの開始時にスタックをチェックすることと、“SCheckAtm()”への呼出しを介して第1コンパイルテスタルーチン240aの内部のルーチンの戻り値“PETable()”をチェックすることを含む。一方、第2コンパイルテスタルーチン240bにおける機能の場合、“CHECK_STACK”が第1コンパイルテスタルーチン240aの場合のように“SCheckStack()”へのコンパイルではなくNULLにコンパイルされるため、“SCheckStack()”への呼出しを介してルーチンの開始時にスタックをチェックすることはない。また、第2コンパイルテスタルーチン240bの機能の場合、第1コンパイルテスタルーチン240aのように“CHECK_ATM”が“SCheckAtm()”へのコンパイルではなくNULLにコンパイルされるため、“SCheckAtm()”への呼出しを介して第1コンパイルテスタルーチン240a内部のルーチンの戻り値“PETable()”をチェックすることはない。
図5は様々な代表的実施形態において説明する代替ライブラリ235a、235bを用いてプログラム135をリンク及び実行するための方法400のフローチャートである。ブロック403で、プログラム135がリンク又は再リンクされた場合には、ブロック403はブロック405に制御を移行する。そうでない場合には、ブロック403はブロック425に制御を移行する。
ブロック405では、デバッグライブラリ(第1ライブラリ)235a又は動作ライブラリ(第2ライブラリ)のいずれかとプログラムソースコード要素205をリンクするモードをユーザが設定する。次いで、ブロック405はブロック410に制御を移行する。
ブロック405でデバッグモードが選択された場合には、ブロック410はブロック415に制御を移行する。そうでない場合には、ブロック405はブロック420に制御を移行する。
ブロック415では、テストプログラム135はデバッグライブラリ235aにおける適切な第1コンパイルテスタルーチン240aとリンクして、実行可能ソフトウェアテストプログラム135を作成する。次いで、ブロック415はブロック425に制御を移行する。
ブロック420では、テストプログラム135は動作ライブラリ235bにおける適切な第2コンパイルテスタルーチン240bとリンクして、実行可能ソフトウェアテストプログラム135を作成する。次いで、ブロック420はブロック425に制御を移行する。
ブロック425では、ブロック415又はブロック420のいずれかで作成された実行可能ソフトウェアテストプログラム135がテストマシン105のコンピュータ110のCPU120にロードされる。次いで、ブロック425はブロック430に制御を移行する。
ブロック430では、被測定装置150をテストマシン105に接続する。次いで、ブロック430はブロック435に制御を移行する。
ブロック435では、テストマシン105のコンピュータ110のCPU120において、実行可能ソフトウェアテストプログラム135が被測定装置でテストされた順に起動される。次いで、ブロック435はブロック440に制御を移行する。
ブロック440でデバッグモードが選択された場合には、ブロック440はブロック445に制御を移行する。そうでない場合には、ブロック440はブロック450に制御を移行する。
ブロック445においてプログラム実行中にプログラムエラーが発見された場合には、ブロック445はブロック455に制御を移行する。そうでない場合には、ブロック445はブロック460に制御を移行する。
ブロック450において、テストすべきDUT150がさらに存在すると判断された場合には、ブロック450はブロック430に制御を移行する。そうでない場合には、ブロック450はプロセスを終了する。
ブロック455では、プログラムソースコード要素205におけるエラーが修正される。次いで、ブロック455はブロック405に制御を移行する。
ブロック460において、テストすべきDUT150がさらに存在すると判断された場合には、ブロック460はブロック430に制御を移行する。そうでない場合には、ブロック460はブロック405に制御を移行する。
テストプログラム135を実行している際にそれ以上エラーが発見されず、プログラム135が動作モードに再リンクされると、図5の他のステップを介さなくとも適切であるとして、ブロック425、430、435が実行される。ただし、ブロック403での判断によりユーザはブロック425、430、435に導かれ、また、ブロック440及び450での判断により、ユーザは必要に応じてブロック425、430、及び435を出るように、そしてそれらブロックに戻るように導かれる。
代表的な実施形態において、関数呼出し210を含むソフトウェアプログラム135を開示する。プログラム135が第1モードでリンクされる場合には、第1ライブラリ235aからの第1コンパイルルーチン240aが関数呼出し210に連結される。プログラム135が第1モードでリンクされない場合には、第2ライブラリ235bからの第2コンパイルルーチン240bが関数呼出し210に連結される。第1コンパイルルーチン240aは、ソースコードルーチン300中のパラメータ310が第1の値に設定されたソースコードルーチン300からコンパイルされ、第2コンパイルルーチン240bは、ソースコードルーチン300中のパラメータ310が第2の値に設定されたソースコードルーチン300からコンパイルされる。第1コンパイルルーチン240aは、第2コンパイルルーチン240bと同じ機能に加えて追加的な機能を有する。
別の代表的な実施形態では、第1ライブラリ235aと第2ライブラリ235bを含む一対のライブラリ235a、235bを開示する。第1ライブラリ235aは第1コンパイルルーチン240aを含み、第2ライブラリ235bは第2コンパイルルーチン240bを含む。第1コンパイルルーチン240aは、ソースコードルーチン300中のパラメータ310が第1の値に設定されたソースコードルーチン300からコンパイルされ、第2コンパイルルーチン240bは、ソースコードルーチン300中のパラメータ310が第2の値に設定されたソースコードルーチン300からコンパイルされる。第1コンパイルルーチン240aは、第2コンパイルルーチン240bと同じ機能に加えて追加的な機能を有する。
さらに別の代表的な実施形態では、ソフトウェアプログラム135を作成する方法400を開示する。この方法は、プログラム135をリンクするモードを特定するステップを含み、プログラム135に対するソースコードは関数呼出し210を含む。モードを特定するステップで第1モードが特定された場合には、第1ライブラリ235aからの第1コンパイルルーチン240aに対するオブジェクトコードを、プログラム135の以前にコンパイルされた形式で関数呼出し210に連結することにより、プログラム135の実行可能形式が作成される。モードを特定するステップで第1モードが特定されない場合には、第2ライブラリ235bからの第2コンパイルルーチン240bに対するオブジェクトコードを、プログラム135の以前にコンパイルされた形式で関数呼出し210に連結することにより、プログラム135の実行可能形式が作成される。第1コンパイルルーチン240aは、第2コンパイルルーチン240bと同じ機能に加えて追加的な機能を有する。
同じように、多くのデータ処理用の製品においては、上述のシステムはハードウェア要素及びソフトウェア要素の組合せとして実行される。さらに、代表的な実施形態を実施するために必要な機能は、コンピュータ可読媒体(例えば、フロッピーディスク、従来のハードディスク、DVD、CD−ROM、フラッシュROM、不揮発性ROM、RAM等)において実行可能である。
本明細書において「プログラム記憶媒体」という用語は、広義には例えばフロッピーディスク(登録商標)、従来のハードディスク、DVD、CD−ROM、フラッシュROM、不揮発性ROM、RAM等、任意のコンピュータメモリを含むが、それらに限定されるものではない。
本明細書で開示したソフトウェアプログラム135及び方法の代表的な実施形態では、ユーザはライブラリルーチンに対する呼出しを行うプログラムを作成する。これらの呼出しには、2つの代替ライブラリ235a、235bのうちの1つに発見されるコンパイルテスタルーチンから応じることができる。これらライブラリのうちの第1ライブラリ235aにおけるルーチンは、ルーチンの操作に関する追加的情報をユーザに提供するが、典型的にはそれを使用して、例えばソフトウェアテストプログラム135としてのソフトウェアプログラム135をデバッグすることができる。これらライブラリのうちの第2ライブラリ235bにおけるルーチンは、第1ライブラリ235aにおけるルーチンと同じであるが、その追加的情報はない。実際、コンパイルルーチン240a、240bの両バージョンに対するソースコードは、パラメータ310の値を除けば同一である。第1コンパイルルーチン240a及び第2コンパイルルーチン240bをコンパイルする際の制御としてパラメータ310の値を使用することで、選択された操作チェックを行うこと、並びに第1ライブラリ235aをコンパイルしたものによってプログラム135を実行することにおける中間地点での値を報告する等、他の機能を行うことが可能となる。新たなライブラリ機能を有するテストプログラム135のプログラムの確認及びデバッグは、ソフトウェアテストプログラム135のソースコードを再コンパイルする必要がないため、簡便化される。ソフトウェアテストプログラム135のソースコードは、デバッグ中にデバッグライブラリ(第1ライブラリ)235aとリンクし、その後ソフトウェアプログラム135の適切な動作を確認した際に、動作ライブラリ(第2ライブラリ)235bと再リンクするだけでよい。
電子的要素150をテストするためのソフトウェアテストプログラム135に関して説明を行ってきたが、本明細書中で開示した技術がかかるソフトウェアプログラム135に限定されないことは、当業者であれば理解できよう。呼出しに応じるためにライブラリ235a、235bのうちのどちらを使用するかに関わらず、ソフトウェアプログラム135によって同じ関数呼出しが行われる。さらに、ユーザの書いたコードを再コンパイルするのではなく、テストマシン105の製造業者が提供したコードのみを再コンパイルすることによって、変更されるコンパイルコードは製造業者が提供したものに限定される。このことにより、任意の問題の出所に関する混乱が抑えられると共に、さらなる問題の導入によってユーザがコードを変更する可能性を減らすことができる。
本明細書において詳述した代表的な実施形態は本発明の単なる例示であり、本発明を制限するものではない。添付の特許請求の範囲内で、上述の実施形態の形式及び詳細を多様に変化させて同様の実施形態としてもよいことは、当業者であれば理解できよう。
様々な代表的実施形態で説明するテストシステムのブロック図である。 様々な代表的実施形態で説明する、プログラムソースコード要素を実行可能ソフトウェアプログラムに変換することに使用される要素及びプロセスのブロック図である。 様々な代表的実施形態で説明する、2つのライブラリのうちの1つからルーチンを呼び出すことにおいて、ソフトウェアプログラムが使用する要素及びプロセスのブロック図である。 様々な代表的実施形態で説明する第1コンパイルルーチン及び第2コンパイルルーチンに対するソースコードルーチンのリストである。 様々な代表的実施形態で説明する代替ライブラリを使用してプログラムをリンク及び実行する方法のフローチャートである。
符号の説明
135 ソフトウェアプログラム(テストプログラム)
210 関数呼出し
235a 第1ライブラリ
235b 第2ライブラリ
240a 第1コンパイルルーチン
240b 第2コンパイルルーチン
300 ソースコードルーチン
310 パラメータ

Claims (10)

  1. 関数呼出しを含むソフトウェアプログラムであって、
    前記プログラムが第1モードでリンクされる場合には、第1ライブラリからの第1コンパイルルーチンが前記関数呼出しに連結され、
    前記プログラムが第1モードでリンクされない場合には、第2ライブラリからの第2コンパイルルーチンが前記関数呼出しに連結され、
    前記第1コンパイルルーチンが、ソースコードルーチン中のパラメータが第1の値に設定される前記ソースコードルーチンからコンパイルされ、
    前記第2コンパイルルーチンが、前記ソースコードルーチン中の前記パラメータが第2の値に設定される前記ソースコードルーチンからコンパイルされ、
    前記第1コンパイルルーチンが、前記第2コンパイルルーチンと同じ機能に加えて追加的な機能を備える、ソフトウェアプログラム。
  2. 前記第1コンパイルルーチンの前記追加的な機能が、前記プログラムをデバッグするための情報を提供するように構成される、請求項1に記載のソフトウェアプログラム。
  3. 前記プログラムがテストマシンで実行されるように構成される、請求項1に記載のソフトウェアプログラム。
  4. 前記プログラムが要素のテストを行うように構成される、請求項1に記載のソフトウェアプログラム。
  5. 一対のライブラリであって、
    第1コンパイルルーチンを含む第1ライブラリと、
    第2コンパイルルーチンを含む第2ライブラリと、
    を含み、前記第1コンパイルルーチンが、ソースコードルーチン中のパラメータが第1の値に設定される前記ソースコードルーチンからコンパイルされ、
    前記第2コンパイルルーチンが、前記ソースコードルーチン中の前記パラメータが第2の値に設定される前記ソースコードルーチンからコンパイルされ、
    前記第1コンパイルルーチンが前記第2コンパイルルーチンと同じ機能に加えて追加的な機能を備える、一対のライブラリ。
  6. 前記第1コンパイルルーチンの前記追加的な機能が、前記第1コンパイルルーチンを呼び出すプログラムをデバッグするための情報を提供するように構成される、請求項5に記載の一対のライブラリ。
  7. 前記第1コンパイルルーチン及び前記第2コンパイルルーチンが、要素のテストを支援するように構成されると共に、テストマシンにおいて前記要素をテストするプログラムの実行を支援するように構成される、請求項5に記載の一対のライブラリ。
  8. ソフトウェアプログラムを作成する方法であって、
    前記プログラムをリンクするモードを特定するステップを含み、前記プログラムのソースコードが関数呼出しを含み、
    前記モードを特定するステップにおいて第1モードが特定される場合には、第1ライブラリからの第1コンパイルルーチンのオブジェクトコードを、前記プログラムの以前にコンパイルされる形式で前記関数呼出しに連結することによって、前記プログラムの実行可能形式を作成し、
    前記モードを特定するステップにおいて第1モードが特定されない場合には、第2ライブラリからの第2コンパイルルーチンのオブジェクトコードを、前記プログラムの以前にコンパイルされる形式で前記関数呼出しに連結することによって、前記プログラムの前記実行可能形式を作成する、方法。
  9. 前記プログラムの前記実行可能形式をコンピュータにロードするステップと、
    前記プログラムの前記実行可能形式を実行するステップと、
    をさらに含む、請求項8に記載の方法。
  10. 前記プログラムを実行するステップの前に要素をテストマシンに接続するステップをさらに含み、前記テストマシンが前記コンピュータを含む、請求項9に記載の方法。
JP2006314430A 2005-11-28 2006-11-21 代替関数ライブラリを備えるソフトウェアプログラム Withdrawn JP2007149089A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/287,819 US20070169026A1 (en) 2005-11-28 2005-11-28 Software program with alternative function libraries

Publications (1)

Publication Number Publication Date
JP2007149089A true JP2007149089A (ja) 2007-06-14

Family

ID=38037897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006314430A Withdrawn JP2007149089A (ja) 2005-11-28 2006-11-21 代替関数ライブラリを備えるソフトウェアプログラム

Country Status (6)

Country Link
US (1) US20070169026A1 (ja)
JP (1) JP2007149089A (ja)
KR (1) KR20070055988A (ja)
CN (1) CN1975666A (ja)
DE (1) DE102006040794A1 (ja)
TW (1) TWI402750B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601452B2 (en) * 2007-03-02 2013-12-03 Oracle International Corporation Compiler for JAVA and .NET
US8464230B2 (en) * 2010-04-13 2013-06-11 Intel Corporation Methods and systems to implement non-ABI conforming features across unseen interfaces
US9952840B2 (en) 2012-05-15 2018-04-24 International Business Machines Corporation Conditional sequential selection of external reference resolutions
US9785542B2 (en) * 2013-04-16 2017-10-10 Advantest Corporation Implementing edit and update functionality within a development environment used to compile test plans for automated semiconductor device testing
CN105677297B (zh) * 2014-11-18 2018-05-04 龙芯中科技术有限公司 套锁实现方法及装置
US9626276B2 (en) * 2014-11-26 2017-04-18 Sap Se Generating a test version of a method to be called during runtime and fulfilling a collaboration contract

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615400A (en) * 1993-06-30 1997-03-25 Apple Computer, Inc. System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers
US5734904A (en) * 1994-11-14 1998-03-31 Microsoft Corporation Method and system for calling one of a set of routines designed for direct invocation by programs of a second type when invoked by a program of the first type
US6163858A (en) * 1998-06-08 2000-12-19 Oracle Corporation Diagnostic methodology for debugging integrated software
US6202205B1 (en) * 1998-07-21 2001-03-13 Hewlett-Packard Company System and method for profile-based, on-the-fly optimization of library code
US6154878A (en) * 1998-07-21 2000-11-28 Hewlett-Packard Company System and method for on-line replacement of software
US6442752B1 (en) * 1999-08-26 2002-08-27 Unisys Corporation Method, apparatus, and computer program product for replacing a dynamic link library (dll) of a first computing environment with a dll of a second computing environment that can be invoked from the first computing environment in a transparent manner
US7757225B2 (en) * 2001-06-29 2010-07-13 Microsoft Corporation Linktime recognition of alternative implementations of programmed functionality
US7647636B2 (en) * 2005-08-24 2010-01-12 Microsoft Corporation Generic RootKit detector

Also Published As

Publication number Publication date
US20070169026A1 (en) 2007-07-19
TW200720999A (en) 2007-06-01
TWI402750B (zh) 2013-07-21
CN1975666A (zh) 2007-06-06
DE102006040794A1 (de) 2007-05-31
KR20070055988A (ko) 2007-05-31

Similar Documents

Publication Publication Date Title
JP4249309B2 (ja) コンピュータプログラムをテストし、デバッグするための再配置可能計測タグ
US6430741B1 (en) System and method for data coverage analysis of a computer program
WO2016177124A1 (zh) 一种实现持续集成测试的方法及装置
US20030046029A1 (en) Method for merging white box and black box testing
US7882495B2 (en) Bounded program failure analysis and correction
US9183114B2 (en) Error detection on the stack
US20060230320A1 (en) System and method for unit test generation
JP2007149089A (ja) 代替関数ライブラリを備えるソフトウェアプログラム
Saff et al. Continuous testing in Eclipse
EP0430182B1 (en) Method for assembly language programming potential error detection sensing apparent inconsistency with a previous operation
US20080127119A1 (en) Method and system for dynamic debugging of software
US8533683B2 (en) Stack walking enhancements using sensorpoints
Bouillon et al. Ezunit: A framework for associating failed unit tests with potential programming errors
US20080127118A1 (en) Method and system for dynamic patching of software
US20080127061A1 (en) Method and system for editing code
JP4009517B2 (ja) プログラム開発支援装置およびコンパイル方法
JP2008052688A (ja) プログラムのパッチデータ生成装置
US20150007139A1 (en) Optimizing error parsing in an integrated development environment
JP4957521B2 (ja) ソフトウェア部分テストシステム、それに用いる方法およびプログラム
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
US20240012741A1 (en) Method for testing a computer program in multiple compositions made up of computer program modules
JPH10293683A (ja) プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体
Edwards et al. AFID: an automated approach to collecting software faults
JP4149047B2 (ja) シミュレータ
KR101091457B1 (ko) 온라인 시스템 테스트 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090605

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100903