改变它在 Ada 中的价值的常量
Constant that changes it's value in Ada
知道常量地址的东西可以改变它吗?或者 Ada 对此有保障吗?
我目前正在做一个大项目,我无法阅读项目的所有代码。但我必须调试它的一部分。我有奇怪的麻烦。事实上,我已经改变了这样的变量声明
My_Var : constant Integer :=1;
在我的包裹中(我们称之为 My_Package
)
然后在项目中对我的变量做一些事情(黑盒子)
当我最后执行该代码时,
My_Package.My_Var<=0
吧returnsTrue
我的问题是,知道我常量的地址的东西可以改变它吗?或者 ada 是安全的吗?
PS:我做了一个 (gdb) watch My_Package.My_Var
并且没有停止程序,直到我在 if My_Package.My_Var<=0
之后得到我的错误
PS PS:我还尝试更改 function
中的常数,返回一个常数值,错误随之消失(但没有帮助我看到变量被修改)
希望您能够帮助我。
谢谢
知道常数地址的东西也许能够改变它。例外情况是常量存储在 (EP)ROM 中,或者编译器与操作系统合谋将其放入可执行文件的只读部分。
一般来说,Ada 允许您解决所有的安全问题,如果您真的足够关心完成所需的工作的话。
知道常量地址的东西可以改变它吗?或者 Ada 对此有保障吗?
我目前正在做一个大项目,我无法阅读项目的所有代码。但我必须调试它的一部分。我有奇怪的麻烦。事实上,我已经改变了这样的变量声明
My_Var : constant Integer :=1;
在我的包裹中(我们称之为 My_Package
)
然后在项目中对我的变量做一些事情(黑盒子)
当我最后执行该代码时,
My_Package.My_Var<=0
吧returnsTrue
我的问题是,知道我常量的地址的东西可以改变它吗?或者 ada 是安全的吗?
PS:我做了一个 (gdb) watch My_Package.My_Var
并且没有停止程序,直到我在 if My_Package.My_Var<=0
PS PS:我还尝试更改 function
中的常数,返回一个常数值,错误随之消失(但没有帮助我看到变量被修改)
希望您能够帮助我。
谢谢
知道常数地址的东西也许能够改变它。例外情况是常量存储在 (EP)ROM 中,或者编译器与操作系统合谋将其放入可执行文件的只读部分。
一般来说,Ada 允许您解决所有的安全问题,如果您真的足够关心完成所需的工作的话。