基于鲲鹏服务器和x86服务器提供K-NET数据采集分析工具压缩包(tracelib-collector-aarch64.tar.gz、tracelib-collector-x86_64.tar.gz),解压目录后在目录下提供动态库librecord.so,在运行应用时使用LD_PRELOAD加载该动态库,通过动态库采集运行时的POSIX函数及参数信息。
采集运行时的POSIX函数及参数信息。
librecord.so运行依赖于包内一同分发的libglib-2.0.so和libgobject-2.0.so,因此运行时需要使能LD_LIBRARY_PATH包含这两个动态库的所在目录,避免使用时由于找不到依赖库出现undefined symbol错误。
LD_LIBRARY_PATH=/directory/of/:$LD_LIBRARY_PATH LD_PRELOAD=/path/to/librecord.so [环境变量1=参数1] ... [环境变量n=参数n] executable args
采集运行时的数据需指定动态库所在路径、配置环境变量以及待采集的二进制文件路径,可配置一个或多个环境变量,RECORD_CONF环境变量为必选参数,多个环境变量之间用空格隔开。
环境变量名 |
数据类型 |
说明 |
---|---|---|
RECORD_CONF |
str |
必选参数,配置文件,指定需要记录的POSIX函数的配置文件路径。 说明:
配置文件中未指定pthread_create和fork函数,在采集时也会默认采集pthread_create和fork函数。 |
RECORD_OUT_DIR |
str |
指定数据文件的输出目录。若不指定,则在当前目录下创建文件夹(record.data)。 说明:
根据RECORD_CONF指定的配置文件采集对应的POSIX函数信息,采集到的数据会存放到RECORD_OUT_DIR指定的输出目录下,不同TID的数据存放到不同的文件里。 |
RECORD_VERBOSE |
int |
是否需要打印日志信息,默认为0。
|
RECORD_FUNC_LIMIT |
int |
指定单个TID内每个配置函数的最大记录数,若不指定,最大记录数为2^31-1。 |
RECORD_TIMEOUT |
int |
指定采集超时时间,单位为秒,若不指定,采集超时时间为2^63-1秒。 超过指定时间后程序自动退出,退出前采集的数据会保留。 |
RECORD_CONF指定的配置文件的格式如下:
pthread_create 1 fork 1 socket 1 bind 0
配置文件中每行只包括两列数据,第一列为POSIX函数名称,第二列根据值为0或1表示是否需要记录对应函数调用时的参数信息,其中空格作为分隔符。
不同线程的数据存放在不同的文件中,对应文件名为record.tid,采集结束后存储的数据文件的格式如下:
1 36149310 3081497 3081497 3081504 3081497 2740656 2 35935130 3081504 3081497 0 36206400 socket 3 2 1 0 0 36251390 connect 3 4 281474441245944 16 0 36345270 write 3 1 745149072 27 0 36374000 write 3 1 745149072 23 0 36400280 write 3 1 745149072 36 0 36419820 write 3 1 745149072 35
数据文件中每一行表示一个数据包,数据包的第一位表示数据包的类型,类型描述如下: