Tange Cloud for Device
 Rev.333
载入中...
搜索中...
未找到
内存跟踪功能使用说明

功能说明

  • 记录所有线程已分配未释放的内存块。并可以随时查看线程分配内存的统计和细节。
  • 开启每块内存会额外分配20字节用于跟踪,目标文件大小和性能影响很小。
  • 开启本功能只需要修改连接参数,不需要修改源码。
  • 仅限linux系统

忽略此功能

如果完全不使用此功能,需要在连接程序时加 --gc-sections编译参数。

使用 ld:

LDFLAGS += --gc-sections

使用 gcc:

LDFLAGS += -Wl,--gc-sections

使用此功能

1.链接命令加参数:

ld:

--wrap=malloc --wrap=realloc --wrap=free --wrap=calloc --gc-sections

或gcc:

-Wl,--wrap=malloc,--wrap=realloc,--wrap=free,--wrap=calloc,--gc-sections

2.打开设备日志。使用命令

‘ /home/httpclt get 'http://127.0.0.1:20202/mem’`

​ 显示每个线程分配的内存情况

‘/home/httpclt get 'http://127.0.0.1:20202/mem?tid=nnn’`

​ 显示特定线程nnn(线程id)分配内存情况

也可以在浏览器上执行此命令,127.0.0.1换成设备IP

  • 开启本功能也许在待定环境下会导致程序崩溃问题,不过目前还没发现。
  • 如果不想使用此功能,可以在程序最开始将全局变量 use_my_alloc0(默认为1
extern int use_my_alloc;
use_my_alloc = 0;
  • 可以在程序开始根据一个环境变量的值开启或关闭此功能