JPH07271605A - C言語プログラムデバッグ方式 - Google Patents

C言語プログラムデバッグ方式

Info

Publication number
JPH07271605A
JPH07271605A JP6064779A JP6477994A JPH07271605A JP H07271605 A JPH07271605 A JP H07271605A JP 6064779 A JP6064779 A JP 6064779A JP 6477994 A JP6477994 A JP 6477994A JP H07271605 A JPH07271605 A JP H07271605A
Authority
JP
Japan
Prior art keywords
memory area
secured
error
argument
checked whether
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
JP6064779A
Other languages
English (en)
Inventor
Mizue Shimazu
瑞枝 島津
Shigeru Takeda
滋 竹田
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP6064779A priority Critical patent/JPH07271605A/ja
Publication of JPH07271605A publication Critical patent/JPH07271605A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 (修正有) 【目的】C言語プログラム開発におけるソースコード中
のメモリ記述の誤りの検出を自動的に行う手段を与え
る。 【構成】ソースコードを読み込み(101)、文字型に定義
された変数のメモリ領域が確保されているかをチェック
する(102)。確保されている場合はその変数の登録を行
う(103)。確保されていない場合は、メモリ領域の内容
を不正に書き換える可能性をチェックし(104)、可能性
がある場合、さらにその変数が引数であるかをチェック
し(105)、引数でなければ誤りとし(107)、引数である場
合はそれ以前に登録されているかをチェックし(106)、
登録されていなければ誤りとする(107)。続いて、メイ
ンからサブルーチンへ値を渡す場合の引数にポインタが
渡されているかをチェックする(108)。引数がポインタ
でない場合、引渡し後に渡されたデータの変更があるか
をチェックし(109)、変更がある場合呼出し側で変更し
たデータを使用するかをチェックし(110)、使用する場
合誤りとする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】ソフトウエア開発におけるデバッ
グ作業に係り、特にメモリ領域の使用法のチェックを行
う方法に関する。
【0002】
【従来の技術】C言語において、ソースコード中のメモ
リ操作の記述に誤りがあっても、コンパイラは誤りを発
見できず、そのまま実行すればメモリ領域の内容の不正
書き換えが起こり、プログラムが異常な動作をすること
があった。このような場合、プログラマが誤りを発見す
るための従来の技術としては、配列データを有するプロ
グラムにおいて配列名と配列変数を対にして定義しハー
ドウエアやコンパイラ等に配列のチェックを行う情報処
理装置特願昭60−167043が知られている。しか
し、他のチェックを行う場合は人手により行っていた。
【0003】
【発明が解決しようとする課題】上記の情報処理装置で
は、ソースコード中で、 (1)文字型変数の定義において、メモリ領域が確保され
ていない場合 (2)メモリ領域が確保されていなければ、メモリ領域の
内容の不正書き換えが起こる可能性がある命令が存在す
る場合において、メモリ領域が確保されていない場合 (3)サブルーチンへの値を渡す際に引数の定義形式がポ
インタでない場合 誤りの発見を行えないという問題があった。
【0004】本発明の目的は、ソースコード中のメモリ
操作の記述の誤りの検出を自動的に行う手段を与えるこ
とで作業の効率向上を図ることにある。
【0005】
【課題を解決するための手段】本発明では、上記の(1)
の課題を解決するため、ソースコード中に定義された変
数について、メモリ領域が確保されていれば登録を行
い、確保されていなければ、以前に前記の登録が行われ
ているかのチェックを行うこととした。
【0006】また、上記の(2)の課題を解決するため、
メモリ領域が確保されていなければ、メモリ領域の内容
の不正書き換えが起こる可能性がある命令が存在する場
合、メモリが確保されているかを確かめるために、以前
に前記の登録が行われているかのチェックを行うことと
した。
【0007】また、上記の(3)の課題を解決するため、
引数の定義形式がポインタであるかのチェックを行うこ
ととした。
【0008】
【作用】本発明により、従来技術で手作業で行ってい
た、ソースコード中のメモリ操作の記述の誤りの発見を
自動的に行うことができ、作業の効率向上が図れる。
【0009】
【実施例】以下、本発明の実施例を図を用いて詳細に説
明する。図1及び図2は、本発明のソースコードの誤り
のチェックを行う為の処理手順を示すフローチャートで
あり、図3は本発明を実現する計算機の機器構成であ
り、図4、図5はC言語によるソースコードの例であ
る。図1〜図5を用いて、本発明によるソースコードの
誤り検出方式の動作を説明する。
【0010】ファイル読み込み部(202)が全てのソース
コード(206)を入力する(101)。次に、誤りチェック部(2
03)が図1及び図2の流れ(102〜115)でソースコードの
チェックを行い結果を処理結果出力部(204)が表示装置
(207)に表示する(116)。図4、図5は図3のソースコー
ド(206)にあたる。
【0011】図4のプログラムのサブルーチン(305)内
には、a(306),b(307),c(308),d(309)が文字列型とし
て定義されている。a(306)はメイン(301)にて、5バイ
トの領域を確保した上で、文字列複写命令strcpyを行っ
ている(310)ため、問題はなく、c(308)は領域を確保し
ていないが変数a(306)のポインタの値をポインタ変数c
(308)に代入している(312)ため問題はない。しかし、b
(307),d(309)はメモリ領域を確保していないにもかか
わらず、文字列複写命令strcpyを行っている(310)(313)
ため、誤りである。
【0012】図5のプログラムでは、メイン(401)から
サブルーチン(408)へ、a(402),b(410),c(411),d(41
2)を渡している(406)。一般に、C言語では子ルーチン
で引数を変更する場合、親ルーチンから子ルーチンへ、
ポインタを渡さなければならない言語規約になってい
る。d(412)はサブルーチン(408)の中で値が変更され
(414)、変更後の値をメイン(401)で使用して
いる(407)にもかかわらず、d(405)をサブルーチン(408)
へ渡す際にポインタを渡していないためサブルーチン(4
08)の中での値の変更はメイン(401)に反映されず誤りで
ある。
【0013】上記の図4の例を用いてメモリ領域の確保
のチェック(102〜115)、図5の例を用いて引数にポイン
タが渡されているか(111〜116)のチェックを誤りチェッ
ク部(203)がどのようにして行っているかを説明する。
【0014】図4の例において、まず誤りチェック部(2
03)はソースコード内の文字型として定義されたすべて
の変数についてメモリ領域が確保されているかをチェッ
クする(102〜104)。メイン(301)のa(302)は、メモリ領
域が確保されているのでバッファ(205)に登録する(10
3)。メインのb(303)、サブルーチン(305)のa(306),b(3
07),c(308),d(309)についても同様にチェックを行う
と、メモリ領域が確保されていないため登録は行わな
い。
【0015】続いて、メモリ領域の使用法の誤りのチェ
ックを行う(105〜110)。そのためには、まず定義された
変数についてメモリ領域が確保されているかをチェック
する(105)。メイン(301)のb(303)、サブルーチン(305)
のa(306),b(307),c(308),d(309)のメモリが確保され
ていない。メモリ領域が確保されていない変数について
は、メモリ領域の内容を不正書き換えする可能性のある
使用法であるかをチェックする(106)。メインのb(303)
は、メイン(301)内ではメモリ領域の内容を不正書き換
えする命令文がないため問題なしとする。サブルーチン
では、c(308)は領域を確保していないが変数a(306)のポ
インタをポインタ変数c(308)に代入している(312)ため
問題はないが、a(306),b(307),d(309)は領域が確
保されていなければメモリ領域の内容の不正書き換えが
起こる可能性がある文字列複写命令strcpyに使用されて
いる(310)(311)(313)。続いて、a(306),b(307),d
(309)がメイン(301)から渡されてきた引数であるかをチ
ェックする(107)。a(306),b(307)は引数であるから、
メイン側(301)で領域が確保されている場合があるた
め、バッファ(205)に登録されているかをチェックする
(108)。a(305)は登録されているので問題ないが、b(3
07)は登録されていないので誤りとする(109)。一方、d
(309)は引数でないため誤りとする(107)。
【0016】図5の例において、まず誤りチェック部(2
03)はソースコード中のサブルーチンへの引数がポイン
タであるかをチェックする(111)。例ではa(402)以外は
ポインタではなく変数の値が渡されている。続いて、b
(403),c(404),d(405)について引渡し後のデータに変
更があるかをチェックする(112)。例では、c(404),d(4
05)に変更がある。さらに、メイン(401)で変更したデー
タを使用するかをチェック(113)するとd(412)が当ては
まるので、誤りとする(114)。
【0017】
【発明の効果】以上説明したように本発明によれば、従
来主に人手により行っていたC言語ソースコード中のメ
モリ操作の記述の誤り、特に領域が確保されていなけれ
ばメモリ領域の不正な書き換えを引き起こすもの、ポイ
ンタが渡されていなければ正しく動作しないものの発見
を自動化することで容易に行えるようにし、ソフトウエ
ア開発の効率を向上させる。
【図面の簡単な説明】
【図1】本発明の実施例における処理手順を示す図であ
る。
【図2】図1に続く処理手順を示す図である。
【図3】本発明の実施例におけるシステムの構成図であ
る。
【図4】本発明の実施例におけるソースコードの例を示
す図である。
【図5】本発明の実施例におけるソースコードの例を示
す図である。
【符号の説明】
202…ファイル読み込み部、 203…誤りチェック部、 204…処理結果出力部、 206…ソースコード。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】C言語を用いたプログラム開発において、
    プログラム記述文(以下ソースコードと称する)に定義
    された変数について、メモリ領域が確保されていれば登
    録を行い、確保されていなければ、以前に前記の登録が
    行われているかのチェックを行うことでメモリ領域の使
    用法の誤りを検出する方式。
  2. 【請求項2】C言語を用いたプログラム開発において、
    ソースコード中にメモリ領域が確保されていないけれ
    ば、メモリの領域の内容の不正書き換えが起こる可能性
    のある命令が存在する場合、メモリ領域が確保されてい
    るかを、請求項1による登録が行われているかのチェッ
    クを行うことでメモリ領域の使用法の誤りを検出する方
    式。
  3. 【請求項3】C言語を用いたプログラム開発において、
    ソースコード中でプログラム間の連絡変数(以下引数と
    称する)がポインタであるかのチェックを行うことでメ
    モリ領域の使用法の誤りを検出する方式。
JP6064779A 1994-04-01 1994-04-01 C言語プログラムデバッグ方式 Pending JPH07271605A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6064779A JPH07271605A (ja) 1994-04-01 1994-04-01 C言語プログラムデバッグ方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6064779A JPH07271605A (ja) 1994-04-01 1994-04-01 C言語プログラムデバッグ方式

Publications (1)

Publication Number Publication Date
JPH07271605A true JPH07271605A (ja) 1995-10-20

Family

ID=13268048

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6064779A Pending JPH07271605A (ja) 1994-04-01 1994-04-01 C言語プログラムデバッグ方式

Country Status (1)

Country Link
JP (1) JPH07271605A (ja)

Similar Documents

Publication Publication Date Title
US6163858A (en) Diagnostic methodology for debugging integrated software
US7647584B2 (en) Automation and isolation of software component testing
US6240545B1 (en) Setting instance breakpoints in object oriented computer programs
US20020073403A1 (en) System and method for whole-system program analysis
US20040015748A1 (en) System and method for providing run-time type checking
Störzer et al. Interference analysis for AspectJ
US20070245322A1 (en) System and method for interactive and assisted program development
US6990612B2 (en) System and method for preventing software errors
JPH03188535A (ja) プログラム・エラー検出方法
US5828890A (en) System for interrupting program operation when an out-of-range value is encountered to correct a data value
US6754888B1 (en) Facility for evaluating a program for debugging upon detection of a debug trigger point
JPH07271605A (ja) C言語プログラムデバッグ方式
JP2655614B2 (ja) 添字の不正使用検査方式
JPH025136A (ja) 言語処理プログラムのエラー処理方式
JP2797749B2 (ja) ファイル破壊事前チェック機構
JPS60179847A (ja) 実配列および仮配列間の整合性チエツク方式
JP2502128B2 (ja) コンパイラ装置
JPH01169641A (ja) ソフトエラー検出方式
US6654879B1 (en) Method and apparatus for analyzing code for out-of-range data involving base and seed tables/lists
JPH06337780A (ja) ロードモジュールのパッチ修正装置および方法
KR20240088450A (ko) 보안체크코드의 유효성 점검 장치, 보안체크코드의 유효성 점검 방법 및 컴퓨터 프로그램
JPS62118448A (ja) 不定値参照の検出方式
JPH05204698A (ja) デバッガ処理方式
JPH02190935A (ja) 構文解析ルールの組込機能を持つプログラムのコンパイル方式
JPH0358232A (ja) プリプロセッサ呼び出し方式