ランタイム‐エラー【runtime error】
ランタイムエラー
ランタイムエラーとは、プログラムの実行時(runtime)に発生するエラーのことである。
プログラムのソースコードをそのつど解釈して実行するインタープリタ型言語では、基本的にすべてのエラーがランタイムエラーとなる。コンパイラ言語の場合は、コンパイル時には検出できずに、実行時に発生したエラーのことを指す。
ランタイムエラーが発生したプログラムは強制終了される。強制終了後に再度起動すると、ランタイムエラーが起きる前の状態で復帰されるプログラムもあるが、これはランタイムエラーに備えてあらかじめ処理内容をバックアップしていた結果であって、ランタイムエラーの発生後に何らかの処理が行われているわけではない。
プログラムが実行される際にシステムのさまざまなリソースを利用する環境では、ダイナミックリンクライブラリや各種オブジェクトなどが実行時に初めて参照される場合がある。このような場合に、参照した先に該当するファイルが見つからなかったりして失敗するとランタイムエラーとなる。あるいは実行するプログラムファイルの破損や、バグ(プログラム内容の誤り)などもランタイムエラーの原因となる場合がある。ファイルの破損が原因であれば、再インストールで回復することができる。しかしバグなど不具合がある場合は、一般のユーザーには対処のしようがない。
ランタイムエラー検出
(ランタイムエラー から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/09/29 13:03 UTC 版)
ランタイムエラー検出(英: runtime error detection)は、ソフトウェアプログラム(主にアプリケーションソフトウェア)を実行時に分析し、その実行中に検出された欠陥を報告するソフトウェア検証方法である。単体テスト、統合テスト、システムテスト(自動/スクリプトまたは手動)、または侵入テストの実施時に利用できる。
概要
ランタイムエラー検出は、静的コード解析では検出や予測が難しく、実行時にのみ現れる欠陥(スレッドの競合、誤ったファイルの上書きなど)を特定し、アプリケーションのクラッシュ、実行速度の低下、または予期しない動作の根本原因に焦点を当てることができる。ランタイムエラー検出によって一般的に検出される欠陥は次の通りである。
- 競合状態
- データ競合
- デッドロック
- 例外[要説明]
- リソースリーク
- メモリリーク
- セキュリティ攻撃に対する脆弱性(SQLインジェクションなど)
- ヌルポインタのデリファレンス
- 初期化されていないメモリ
- バッファオーバーラン[1]
- スタックオーバーフロー
ランタイムエラー検出ツールは、アプリケーションの実行された制御フローのエラーのみを検出できる[2]。
C言語やC++のようなプログラミング言語では、コードの安全性管理に関してはプログラマに委ねられており、言語仕様レベルで実行時エラーに対する防御策が施されていないため、このような実行時エラー検出ツールの活用が重要になってくる[3]。一方、JavaやC#などの後発言語では、配列の範囲外アクセスやヌル参照アクセスのような一部の実行時エラーは、実行時に仮想マシンのフレームワーク側が検出して例外を送出するため、アプリケーションコード側でのハンドリングが可能である。ただし、スレッド競合など、後発言語であっても動的分析ツールを使わなければ検出が難しい実行時エラーもある[4][5]。
デバッグビルド用のランタイムライブラリやデバッガが実行時エラー検出機能を備えていることもある[6][7]。
脚注
- ^ Runtime Error Detection by Parasoft
- ^ MUST: A Scalable Approach to Runtime Error Detection in MPI Programs by Tobias Hilbrich, Martin Schulz, Bronis R. de Supinski, Matthias S. Müller, in Tools for High Performance Computing 2009
- ^ 実行時メモリエラー検出 | 静的解析ツール・単体テストツール C++test | テクマトリックス株式会社
- ^ マルチスレッドアプリのコードを動的に解析するツール、米コベリティ - @IT
- ^ MSDN Magazine: スレッド パフォーマンス - Visual Studio 2010 におけるリソース競合の同時実行プロファイリング | Microsoft Learn
- ^ Find memory leaks with the CRT library | Microsoft Learn
- ^ Debugging a Stack Overflow - Windows drivers | Microsoft Learn
関連項目
ランタイムエラーと同じ種類の言葉
- ランタイムエラーのページへのリンク