ich KLEE jetzt lerne und ich schrieb einen einfachen Code:KLEE nicht findet nicht initialisierten Variablen Fehler
#include "klee/klee.h"
#include <stdio.h>
#include <stdlib.h>
int test(int *p)
{
int *q = (int *) malloc(sizeof(int));
if ((*p) == (*q)) {
printf("reading uninitialized heap memory");
}
return 0;
}
int main()
{
int *p = (int *) malloc(sizeof(int));
test(p);
return 0;
}
Zuerst erzeugen ich LLVM Bitcode, und dann an den Bitcode ich ausführen KLEE. Im Anschluss ist die gesamte Ausgabe:
KLEE: output directory is "/Users/yjy/WorkSpace/Test/klee-out-13"
Using STP solver backend
KLEE: WARNING: undefined reference to function: printf
KLEE: WARNING ONCE: calling external: printf(140351601907424)
reading uninitialized heap memory
KLEE: done: total instructions = 61
KLEE: done: completed paths = 4
KLEE: done: generated tests = 4
Ich nehme an, dass KLEE mir einen Fehler geben soll, dass der q-Zeiger nicht initialisiert wird, aber es funktioniert nicht. Warum gibt mir KLEE keinen Fehler oder eine Warnung? KLEE kann diesen Fehler nicht erkennen? Danke im Voraus!