Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 运行时注入分析策略_C_Profiling_Profiler - Fatal编程技术网

C 运行时注入分析策略

C 运行时注入分析策略,c,profiling,profiler,C,Profiling,Profiler,我正在嵌入式平台上开发一种体系结构,由于实时性的限制,我无法与JTAG调试器一起使用 我的想法是基于链接器内存映射文件(这是一个包含所有符号和地址的漂亮XML文件)实现一种入侵探查器 在运行期间以及使用正确的声明编译目标时,我可以在函数的开头和结尾添加一条JMP指令以对其进行基准测试 使用这些间谍,我可以记录特定函数的执行时间以及堆栈状态 目前,我的目标接口是用Python编写的,我正在考虑以下分析方法: p = Profiling('memorymap.xml') trigger = p.Ad

我正在嵌入式平台上开发一种体系结构,由于实时性的限制,我无法与JTAG调试器一起使用

我的想法是基于链接器内存映射文件(这是一个包含所有符号和地址的漂亮XML文件)实现一种入侵探查器

在运行期间以及使用正确的声明编译目标时,我可以在函数的开头和结尾添加一条JMP指令以对其进行基准测试

使用这些间谍,我可以记录特定函数的执行时间以及堆栈状态

目前,我的目标接口是用Python编写的,我正在考虑以下分析方法:

p = Profiling('memorymap.xml')
trigger = p.AddTrigger('interrupt_isr', variable_change = 'var_foo')
p.AddSpy('function_foo', nacquisitions = 8, trigger = trigger)
一旦满足触发条件,spy将开始记录函数
函数\u foo
的下一个8次执行。在函数
interrupt\u isr
的开头添加一个触发器,并在变量
var\u foo
更改时触发

目前,我对自己的评测策略不是很满意。有没有什么标准的评测界面可以让我从中获得灵感

喷射机构由几个步骤组成:

  • 阅读所需标签/功能名称处的说明
  • 在spy例程结束时复制读取指令
  • 将指令替换为跳转到spy例程
  • 执行间谍程序
  • 跳回原来的地址

  • 这个东西是否有一个调试器,比如GDB?有一个调试器,甚至还有
    gprof
    ,但这些工具的目标是用于JTAG连接或模拟。独立运行时解决方案不可用,因此我需要自己的解决方案。顺便说一句,我仍然不明白如何将
    gprof
    与安装
    gprof
    的相同体系结构上无法运行的可执行文件一起使用……我之所以这样问,是因为如果您有一个调试器,您可以使用它或方法。它们的工作原理与获取时间测量值的典型分析器略有不同。这些方法依赖于加速机会的特性,即它们优先被随机时间中断吸引。如果你有一个模拟器,你可以在那里做。你在模拟器上得到的任何加速都可能会转移到嵌入式硬件上。