淘宝网tf卡检测工具(tf卡价格一览表)

发布时间:

本篇文章给大家谈谈tf卡检测工具,以及tf卡价格一览表的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

文章详情介绍:

如何使用AddressSanitizer进行内存检查

AddressSanitizer介绍

AddressSanitizer是一种用于检测内存错误的工具,它能够在程序运行时动态地检测内存访问错误,例如使用未初始化的内存、访问已经释放的内存和缓冲区溢出等。在开发和调试过程中使用AddressSanitizer能够帮助开发者快速诊断和修复内存错误,提高程序的安全性和稳定性。

AddressSanitizer使用步骤

以下是在工程中使用AddressSanitizer的步骤:

步骤1:准备代码

在使用AddressSanitizer前,需要对代码进行一些准备工作,以确保程序能够被AddressSanitizer正确地检测和分析。具体包括以下几点:

引入AddressSanitizer库:需要将AddressSanitizer库链接到程序中,以启用其检测能力。

编译选项设置:需要设置编译选项,包括调试选项、优化选项、警告选项等。具体选项可以参考AddressSanitizer的官方文档。

关闭其他特性:需要关闭其他可能影响AddressSanitizer检测的特性,例如线程池、动态链接库等。

可以参考下面这个简单的示例代码:

#include #include #include void foo(char* str) { char* buffer = (char*)malloc(sizeof(char) * 256); strncpy(buffer, str, 256); printf("Buffer: %s\n", buffer); free(buffer); } int main(int argc, char** argv) { foo("This is a test"); return 0; }

这是一个简单的C语言程序,其中定义了一个名为foo的函数,它接受一个字符串参数并分配了一个256字节的缓冲区来存储它。函数体内使用了strncpy函数将参数复制到缓冲区中,并打印出缓冲区的内容。最后释放缓冲区。

步骤2:编译程序

使用以下指令编译程序:

gcc -fsanitize=address -g test.c -o test

这个指令使用gcc编译器,启用了AddressSanitizer功能。编译完成后会生成一个名为test的可执行文件。

步骤3:运行程序

使用以下指令运行程序:

./test

这个程序在没有任何内存错误的情况下应该正常运行并输出Buffer: This is a test。但是,如果我们故意在foo函数中引入一个内存错误,例如未释放分配的缓冲区,程序就会因为内存泄漏而崩溃。我们可以在foo函数中添加一行代码来模拟内存泄漏的情况:

void foo(char* str) { char* buffer = (char*)malloc(sizeof(char) * 256); strncpy(buffer, str, 256); printf("Buffer: %s\n", buffer); return; //添加这行代码来模拟内存泄漏 free(buffer); }

这个程序因为内存泄漏而崩溃,输出以下信息:

================================================================= ==1504==ERROR: LeakSanitizer: detected memory leaks Direct leak of 256 byte(s) in 1 object(s) allocated from: #0 0x7fa946e9e7f0 in malloc (/usr/lib/libasan.so.6+0xe17f0) #1 0x400951 in foo /home/user/test.c:6:18 #2 0x400972 in main /home/user/test.c:12:5 #3 0x7fa946c662b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0) SUMMARY: AddressSanitizer: 256 byte(s) leaked in 1 allocation(s).

这个信息告诉我们,程序在foo函数中分配了一个256字节的缓冲区,但是并没有释放它,导致原本应该被释放的内存泄露。通过这个信息,我们可以追踪到内存泄漏发生的位置和原因,从而快速修复内存错误。

性能测试,python 内存分析工具 -memray

Memray是一个由彭博社开发的、开源内存剖析器;开源一个多月,已经收获了超8.4k的star,是名副其实的明星项目。今天我们就给大家来推荐这款python内存分析神器。

Memray可以跟踪python代码、本机扩展模块和python解释器本身中内存分配,可以生成多种不同类型的报告,帮助您分析python代码内存使用情况。

工具的主要特点: 跟踪每个函数的调用,能够准确的跟踪调用栈 能跟踪c/c++库的调用 分析速度很快 收集内存数据,输出各种图标 使用python线程 与本地线程一起工作

可以帮助解决的问题: 分析应用程序中内存分配,发现高内存使用率的原因 查找内存泄漏的原因 查找导致内存大量分配的代码热点

memray安装

环境要求:python3.7+以上版本,linux系统(仅支持linux系统)

安装:pip3 install memray

memray使用memray使用帮助

python3 -m memray --help

参数

作用

run

运行指定的应用程序并跟踪内存使用情况

flamegraph

在html报告中,用火焰图方式,显示内存使用情况

table

在html报告文件中,用表格的方式显示内存分析情况

live

用实时屏幕显示方式,显示各种内存使用情况

tree

在终端中,用树形结构显示内存使用情况

parse

用debug模式,显示每一行的内存使用情况

summary

汇总终端运行期间的内存使用概况

stats

在终端中非常详细的显示内存使用情况

run命令使用

python3 -m memray run --help 获取帮助

参数

作用

-o OUTPU,--output OUTPUT

指定输出结果到哪里

--live

启动实时跟踪会话模式

--live-remote

启动实时跟踪会话并等待客户端连接

--live-port LIVE_PORT, -p LIVE_PORT

启动实时跟踪时要使用的端口

--native

跟踪C/C++堆栈

--follow-fork

跟踪脚本分叉的子进程中的分配

--trace-python-allocators

记录pymalloc分配器的分配情况

-q, --quiet

运行时不显示任何特定于跟踪的输出

-f, --force

强制复购已有文件

--compress-on-exit

跟踪完成后使用 lz4 压缩生成的文件

--no-compress

不使用 lz4 压缩生成的文件

-c

作为字符串传入的程序

-m

将库模块作为脚本运行

python3 -m memray run xxx.py 直接分析某个py文件的内存使用情况,就会在当前路径下生成一个 ‘memray-py文件名.进程id.bin’ 的内存使用记录文件。当然,也可以跟上-o outFiPath 指定输出路径。如果运行的py文件是模块代码,也可以使用-m xxx.py 方式运行。

‘memray-py文件名.进程id.bin’ 文件,可以通过 python3 -m memray flamegraph memray-py文件名.进程id.bin 转换为一份html-火焰图报告

如上图,从上往下,显示了程序的调用过程,宽度,代表函数占用内存多少。

python3 -m memray run --native xxxx.py 会跟踪分析python代码中调用底层的C/C++函数消耗的内存情况

python3 -m memray run --trace-python-allocators xxx.py 跟踪分析python程序内存分配器pymalloc的情况

这个看上去,和没有加参数,效果差不多,但是,实际上是完全不一样的。这种方式,会深入跟踪内存分配,python常见的内存分配器有四种(malloc、free、realloc、pymalloc),这个参数,在python出现内存溢出时,就非常有用了。但是,加了这个参数,运输速度会变慢,收集的数据生成的文件会更大。

python3 -m memray run --live xxx.py 用实时屏幕模式显示跟踪的内存数据。

默认时,根据Total memory的数据从大到小,往下排列;按"O",可以根据私有内存从大到小,排序显示内存对象;按“A”,则根据内存分配次数量从高到底排序。

有了这个统计数据,就能快速定位到哪些对象,占用内存大,哪些对象被频繁的分配内存。这些对象,就是重点分析对象。

flamegraph命令---生成火焰图报告

python3 -m memray flamegraph --help 获取帮助

python3 -m memray flamegraph xxx.bin 生成火焰图

table命令--生成表格报告

python3 -m memray table --help 获取帮助

python3 -m memray table xxxx.bin 把bin文件转换为表格报告

tree命令--生成树形报告

python3 -m memray tree --help 获取帮助

python3 -m memray tree xxxx.bin 把bin文件转换为树形报告

summary命令--生成概要报告

python3 -m memray summary --help 获取帮助

python3 -m memray summary xxxx.bin 对bin文件进行分析,生成概要报告

stats命令---生成详细统计报告

python3 -m memray stats --help 获取帮助

python3 -m memray stats xxxx.bin 对bin文件进行分析,生成详细报告