K-NET数据采集分析使用示例

简要示范全流程采集运行时数据,分析并展示函数调用的时序图,分析POSIX函数兼容性

使用示例

  1. “/home/demo/config.txt”配置文件,test_posix二进制文件为例,采集文件中的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。

  2. 查看数据文件。

    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

  3. “/home/demo/data/”数据文件存放路径为例,展示时序图。

    devkit advisor knet seq-diag -d /home/demo/data -o /home/demo/test.md

    生成的文件内容如下所示。

    图1 时序图

    时序图文件为.md格式,在支持.md格式的工具中需要包含mermaid插件进行渲染操作。

  4. 以工具提供的兼容性配置文件(“/home/demo/compat_conf.json”为例,展示兼容性。

    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()函数不兼容。