0

我正在尝试在使用开源 perl 脚本从 CSV 文件生成的 .decls 和 .dtrace 文件上运行 Daikon。下面将提供 .decls 和 .dtrace 文件。daikon.jar 文件保存在一个目录中,该目录有一个子目录“scripts”,我在其中保存 .dtrace 和 .decls。

我正在尝试使用以下命令从包含 daikon.jar 文件的目录中调用 daikon:

java -cp daikon.jar daikon.Daikon 脚本/example.dtrace 脚本/example.decls

程序响应如下:

Daikon version 5.8.10, released November 1, 2021; http://plse.cs.washington.edu/daikon.
(read 1 decls file)                                                            
Processing trace data; reading 1 dtrace file:                                  

Error at line 1 in file scripts/example.dtrace: No declaration was provided for program point program.point:::POINT

我很困惑为什么它找不到我提供的包含 program.point 函数声明的声明文件。下面我提供了 example.dtrace 和 example.decls 文件的内容。


例子.dtrace

program.point:::POINT
a
1
1
b
1
1
c
2
1
d
2
1
e
4
1

aprogram.point:::POINT
a
3
1
b
3
1
c
4
1
d
4
1
e
5
1

例子.decls

DECLARE
aprogram.point:::POINT
a
double
double
1
b
double
double
1
c
double
double
1
d
double
double
1
e
double
double
1
4

1 回答 1

0

您的example.decls文件声明了一个名为program.point:::POINT 的程序点,它以 a 开头您的example.dtrace文件包含名为 program.point:::POINT 的程序点的示例,该程序点不以 a 开头。

因此,消息是正确的:没有名为 program.point:::POINT 的程序点的声明,尽管有一个名为 program.point:::POINT 的程序点的声明

使两个文件之间的程序点名称保持一致应该可以解决您的问题。通过将字符添加a到文件的开头example.dtrace,我能够让 Daikon 产生输出:

Daikon version 5.8.11, released November 2, 2021; http://plse.cs.washington.edu/daikon.
(read 1 decls file)
Processing trace data; reading 1 dtrace file:
[2021-11-17T10:13:50.284232]: Finished reading example.dtrace                  
===========================================================================
aprogram.point:::POINT
a == b
c == d
a one of { 1.0, 3.0 }
c one of { 2.0, 4.0 }
e one of { 4.0, 5.0 }
Exiting Daikon.
于 2021-11-17T18:15:12.013 回答