理解数组或指针的KLEE测试数据

时间:2017-03-11 05:53:47

标签: unit-testing klee

我正在使用KLEE生成功能的测试数据。但是KLEE生成的测试数据让我有些麻烦。

输入:

void arrange(int a[]) {
    ...
}

以下是KLEE中的测试数据:

...
object    0: name: 'a'
object    0: size: 40
object    0: data:
'\xa0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

在这个测试用例中,我已经知道变量a的大小是40个字节。这意味着每个具有四个连续数字的块(例如,第一个块\xa0\xff\xff\xff表示整数)。但是,\xa0\xff\xff\xff的价值是什么?

2 个答案:

答案 0 :(得分:0)

对于KLEE来说,它只是一个内存块。

  

klee_make_symbolic()函数,它接受三个参数:我们想要视为符号的变量(内存位置)的地址,它的大小和名称(可以是任何东西)。

答案 1 :(得分:0)

您可以通过以下方式将其转换为整数:

ktest-tool --write-ints t000001.ktest