You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lauterbach Trace32生成函数统计时遇栈溢出问题,求解决方案

解决Lauterbach Trace32函数统计栈溢出及精准追踪函数的方案

一、栈溢出问题解决办法

针对函数调用过多导致的Trace.STATistic.Func命令栈溢出,可尝试以下方案:

  • 调整Trace32内存分配参数:在PRACTICE脚本开头增加内存配置命令,扩大统计模块的栈空间:
    SYStem.MemSize.STATistic 0x100000
    
    数值可根据实际调用量调整(单位为字节),调整后需重启Trace32生效。
  • 分批处理追踪数据:不要一次性加载完整追踪文件,通过时间或地址范围拆分处理:
    按时间范围过滤:
    Trace.RANGE.Time <起始时间> <结束时间>
    Trace.STATistic.Func TotalRatio Total MIN MAX AVeRage Count InternalRatio TotalBAR /Sort TotalRatio
    
    按函数地址范围过滤:
    Trace.Filter.Add Func <起始地址> <结束地址>
    Trace.STATistic.Func TotalRatio Total MIN MAX AVeRage Count InternalRatio TotalBAR /Sort TotalRatio
    
  • 简化统计输出项:减少不必要的统计字段,降低计算负载:
    Trace.STATistic.Func TotalRatio Total MIN MAX AVeRage Count /Sort TotalRatio
    

二、仅追踪指定函数的配置方案

1. 使用Trace.Filter规则精准追踪

  • 按函数名称过滤(需提前加载完整符号表):
    Trace.Filter.Add Func main sub_func1 sub_func2
    Trace.Filter.On
    
  • 按地址范围过滤:
    Trace.Filter.Add Func 0x80001000 0x80002000
    Trace.Filter.On
    
  • 排除不需要的函数:
    Trace.Filter.Exclude Func idle_task log_func
    Trace.Filter.On
    

2. 硬件层面优化追踪范围

利用POWERTRACE 3的硬件过滤功能减少USB3传输的数据量:

  • 在Trace32的Trace.Config窗口启用硬件地址过滤,仅捕获目标函数所在地址段的指令。
  • 配置触发条件,仅在进入目标函数时开始追踪、退出时停止,进一步缩小数据量。

三、注意事项

  • 符号表加载完整是按名称过滤的前提,确保使用LOAD.Elf或LOAD.Sym命令正确加载符号。
  • 拆分处理数据时,需注意统计结果的一致性,可手动合并分批统计的数据。

内容的提问来源于stack exchange,提问作者Eli Agronov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:45:43