Ada 言語 (約 10000 行のコードのみ) を使用して大規模なプロジェクトを開発しています。コントラクト ベースのプログラミング (Ada-2012 の事前条件、事後条件、型不変条件などの機能) の使用中に、アサーションまたは条件がうまくいかない場合、プログラムが終了することがわかりました。タイプとエラーの場所に関するメッセージ。
次に、問題が ada 2012 の機能に関するものなのか、それともランタイム エラーに関するものなのかを判断するために、アサーション/コントラクトに関係のない単純なランタイム エラー、つまりゼロによる除算を挿入しようとしました。
declare
X : Integer := 1 - 1;
Y : Integer := 1 / X;
begin
null;
end;
この場合、コンパイラは例外が発生することを通知しますが、実行時にプログラムは完全に終了しますが、何も出力されません。したがって、アサーションに関係するものだけでなく、あらゆる種類の実行時チェックの失敗で問題が発生します。
さらに、数行のコードだけで新しいプロジェクトを作成して、単純なランタイム エラー (ゼロ除算の前と同様) と前提条件とアサーションの失敗を試してみました。この小さなプロジェクトでは、プログラムはすべてのエラーをコンソールに出力します。この問題の影響を受けるのは、大規模なプロジェクトだけです。
私の質問は、どこに問題があるのでしょうか? なぜこれは私のプロジェクトにのみ影響し、作成されたばかりの単純なプロジェクトには影響しないのですか? 実行時チェックの失敗の出力を禁止するオプションはありますか? XUbuntu 13.10で実行しています。gnat、gps、gnatcoll、aws、polyorb の最新 (2013) gpl バージョンを使用しています。スイッチ「-gnata」と「-gnat12」でコンパイルしています。
助けてくれてどうもありがとう。