c - 除了将其复制到内存位置或将其定义为静态之外,是否有一种方法可以监视正在运行的实时软件上的局部变量?

标签 c optimization real-time simulink execution-time

示例:

int Global;

void outputFunction(void) {
    int local1;
    int local2;
    local1 = 10;
    local2 = 5 + local1;
    Global = local2;
}

在前面的示例中,local1local2 不在范围内。 我正在使用实时软件(从 simulink-coder 生成),我需要找到一种方法将信号(1 到 5000 个)用作本地信号,以便我可以从高执行或周转时间中受益,但同时当代码执行时我需要随时访问任何信号。 我考虑过如果我在每个局部变量赋值之后添加标签和 nops,就会在运行时覆盖。并在运行时找到一种方法来覆盖这些 nop,以将寄存器移动到作用域寄存器,如 %%xmm7。

最佳答案

我的答案是,不,除非您有一个带有高端调试器/数据记录器的套接字处理器,允许完全访问所有寄存器和内存。这可能会花费至少约 1 万美元,并且如果您的应用程序必须生活在恶劣的环境中,那么它的值(value)就很小。如果这是生成的代码,我强烈建议反对在代码生成后对其进行编辑。当您稍后尝试重新创建以前的版本时,这可能会带来各种乐趣,除非您对开发非常严格,这在研究和开发中很少见。 :-)

关于c - 除了将其复制到内存位置或将其定义为静态之外,是否有一种方法可以监视正在运行的实时软件上的局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914291/

相关文章:

algorithm - 最长公共(public)子序列 (LCS) 长度的 Fast(er) 算法

android - 如何使用 react native 集市显示来电

real-time - 使用 Real Time Linux 开始编程的最佳方式是什么?

c - 向 USB 端口 C 发送信号

c - GDB 打印值相对于寄存器

regex - 有没有比我的正则表达式更好的解决方案

optimization - 神经网络、局部最小规避技术

c - Unload() 递归 C Segfault(类似 TRIE 的数据库) CS50 pset5

c - 是否可以手动检查 c 中的内存对齐?

java - 在 JSON 对象上与 Redis 和 JAVA 进行实时多用户协作