我正在使用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
的价值是什么?
答案 0 :(得分:0)
对于KLEE来说,它只是一个内存块。
klee_make_symbolic()函数,它接受三个参数:我们想要视为符号的变量(内存位置)的地址,它的大小和名称(可以是任何东西)。
答案 1 :(得分:0)
您可以通过以下方式将其转换为整数:
ktest-tool --write-ints t000001.ktest