数据竞争检查命令参考

数据竞争检查就是检查C/C++源码在鲲鹏平台运行时是否存在动态内存一致性问题(目前仅支持鲲鹏920),并提供数据竞争的检测结果与插入内存屏障的建议。

只支持对单进程应用进行数据竞争检查,且GCC版本在9.4.0以上。

命令功能

动态检查源码中数据竞争的情况。

命令格式

1
devkit advisor dr-check [-h | --help] {-f ELF_FILE | --elf-file ELF_FILE} [-i INPUT_PATH | --input INPUT_PATH] [-s SAFE_FILE | --safe-file SAFE_FILE] [-p ELF_PARAMS | --elf-params ELF_PARAMS] [-o OUTPUT_PATH | --output OUTPUT_PATH] [-sf SHIELD_FILE | --shield-file SHIELD_FILE] [-cf CONFIG_FILE | --config-file CONFIG_FILE] [-r {all,json,html,csv} | --report-type {all,json,html,csv}] [-l {0,1,2,3} | --log-level {0,1,2,3}] [--set-timeout TIMEOUT] 

参数说明

表1 参数说明

参数

参数选项

参数说明

-h/--help

-

获取帮助信息。

-i/--input

input_path

ELF文件对应的源码文件夹路径。

-f/--elf-file

elf_file

必选参数,ELF文件路径。待测ELF文件必须带有调试信息(编译时增加-g选项)。

-s/--safe-file

safe_file

cfg配置文件。指定在动态数据竞争检测中不进行检查的安全函数,C++中函数名称需为重载后的函数名称。

-p/--elf-params

elf_parameter

指定执行ELF文件时所需的输入参数。

-o/--output

output_path

扫描报告的存放路径,默认存放在当前执行路径下,报告名称为模块名称_时间戳。

-sf/--shield-file

shield_file

cfg配置文件。指定在动态数据竞争检测中不参与检查的文件名或动态库。

-cf/--config-file

config_file

json配置文件。指定在动态内存一致性检测期间不检查数据竞争的自定义锁。

-l/--log-level

0/1/2/3

设置日志级别,默认为1。
  • 0:日志级别为DEBUG。
  • 1:日志级别为INFO。
  • 2:日志级别为WARNING。
  • 3:日志级别为ERROR。

-r/--report-type

all/json/html/csv

扫描报告的格式,默认为all。
  • all:生成JSON、HTML、CSV三种格式报告。
  • json:生成JSON格式报告。
  • html:生成HTML格式报告。
  • csv:生成CSV格式报告。

--set-timeout

time

任务超时时间,单位为分钟,若执行时间超过超时时间则退出执行。默认无超时时间,任务将持续执行直到结束。

使用示例

此处以扫描“/home/testcase/project”路径下源码文件为例,请根据实际情况进行修改。

1
devkit advisor dr-check -i /home/testcase/project -f /home/advisor/test

返回信息如下,并输出报告。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
Executing data race check task, please wait...
Scanned time: 2024/07/16 14:01:30
 
Configuration:
    Elf file path: /home/advisor/test
    Scan source code path: /home/testcase/project
    Generate report path: /home/ DevKit_Software
    Generate report type: all
    Task Timeout Interval: The timeout period is not set.
    Log level: info
 
Summary:
There are 2 recommendable code lines to modify.
 
For the details information, please check:
    /home/ DevKit_Software /dr-check_20240716140130_6480.json
    /home/ DevKit_Software /dr-check_20240716140130_6480.html
    /home/ DevKit_Software /dr-check_20240716140130_6480.csv

输出报告说明

表2 数据竞争检查输出报告参数说明

参数

说明

配置信息

显示软件源码文件及可执行文件存放路径。

需要修改的源码文件

显示存在数据竞争问题,并需要进行修改的源码文件路径等相关信息。