示例:
int Global;
void outputFunction(void) {
int local1;
int local2;
local1 = 10;
local2 = 5 + local1;
Global = local2;
}
在前面的示例中,local1
和 local2
不在范围内。
我正在使用实时软件(从 simulink-coder 生成),我需要找到一种方法将信号(1 到 5000 个)用作本地信号,以便我可以从高执行或周转时间中受益,但同时当代码执行时我需要随时访问任何信号。
我考虑过如果我在每个局部变量赋值之后添加标签和 nops,就会在运行时覆盖。并在运行时找到一种方法来覆盖这些 nop,以将寄存器移动到作用域寄存器,如 %%xmm7。
最佳答案
我的答案是,不,除非您有一个带有高端调试器/数据记录器的套接字处理器,允许完全访问所有寄存器和内存。这可能会花费至少约 1 万美元,并且如果您的应用程序必须生活在恶劣的环境中,那么它的值(value)就很小。如果这是生成的代码,我强烈建议反对在代码生成后对其进行编辑。当您稍后尝试重新创建以前的版本时,这可能会带来各种乐趣,除非您对开发非常严格,这在研究和开发中很少见。 :-)
关于c - 除了将其复制到内存位置或将其定义为静态之外,是否有一种方法可以监视正在运行的实时软件上的局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914291/