定数のアドレスが変更されていることを知っているか、それについてAdaが保護されていますか?Adaで値を変更する定数
私は現在大きなプロジェクトに取り組んでおり、私はプロジェクトのすべてのコードを読むことができません。しかし、私はその一部をデバッグする必要があります。そして私は奇妙な問題を抱えています。実際、私は My_Var : constant Integer :=1;
のような変数の宣言を私のパッケージに入れました(My_Package
と呼んでください) 次に、プロジェクト(ブラックボックス)の変数にいくつかのことが行われました そして最後にそのコードを実行すると、
My_Package.My_Var<=0
それは、私の質問はであることやADAは、その周りに固定され、私の定数の変更のアドレスを知っている何かをTrue
をすることができます返しますか?
PS:私はif My_Package.My_Var<=0
PS PSの後に私のエラーを取得するまで、私は(gdb) watch My_Package.My_Var
と何がプログラムを停止しました:(Iも一定の値を返すfunction
で私の定数を変更しようとバグはそれで行って変数がどこで変更されるかを私に知らせることはできませんでした) あなたが私を助けてくれることを願っています。
ありがとう
定数は、読み取り専用のハードウェアポートに(アドレスのアスペクトを使用して)マップできます。そのような定数は、通常、揮発性とマークされるべきであるため、(ハードウェア状態の変化を観察するために)再読み込みされます。これは、組み込みプロセッサ(MCU)ターゲットにはしばしば適用されます...あなたはどのターゲットシステムを扱っていますか? –
私は組み込みx86で動作するはずのコードで作業していますが、Linux x86を使用する必要があります。 それは私が持っていた挙動かもしれません(ハードウェアのアドレスはLinuxのコンパイルには対応していません) –