简要示范全流程采集运行时数据,分析并展示函数调用的时序图,分析POSIX函数兼容性
cd /home/demo/ LD_PRELOAD=./librecord.so RECORD_CONF=config.txt RECORD_OUT_DIR=/home/demo/data/ ./test_posix
librecord.so、libglib-2.0.so、libgobject-2.0.so在/home/demo/目录下。
config.txt配置文件内容:
socket 1 listen 1 bind 1 setsockopt 1 epoll_create1 1 epoll_ctl 1 epoll_wait 1 epoll_pwait 1 send 1 recv 1
在“/home/demo/data/”路径下生成对应的数据文件,即record.3088471。
vim /home/demo/data/record.3088471
record.3088471数据文件内容:
1 35507430 3088471 3088471 3088471 3088471 2740656 0 35552550 socket 3 2 1 0 0 35586810 setsockopt 5 4 1 2 281474293380980 4 0 35610790 bind 3 4 281474293382192 16 0 35628930 listen 2 4 3 0 35643730 epoll_create1 1 0 0 35656940 epoll_ctl 4 5 1 4 281474293382168 0 35676960 epoll_wait 4 5 281474293382008 10 4294967295 0 35695430 epoll_pwait 5 5 281474293382008 10 4294967295 0
devkit advisor knet seq-diag -d /home/demo/data -o /home/demo/test.md
生成的文件内容如下所示。
时序图文件为.md格式,在支持.md格式的工具中需要包含mermaid插件进行渲染操作。
devkit advisor knet compat -d /home/demo/data -c /home/demo/compat_conf.json
返回信息如下:
=====ERROR: some function calls do not satisfy conditions====== [Function call] socket 2 1 0 [Condition] when value of arg 1 is 1,condition should be satisfied: arg 2 should be one of them: 6 [Function call] setsockopt 4 1 2 281474293380980 4 [Condition] when value of arg 2 is 2,condition should be satisfied: arg 3 should be in the range: [88,32767] =============================================================== K-NET tools executed successfully.
从回显信息可以看出,socket()、setsockopt()函数不兼容。