[klee-dev] Single-step debugging (was: Abouttheklee_make_symbolic)
Jonathan Neuschäfer
j.neuschaefer at gmx.net
Sat Mar 23 17:25:25 GMT 2013
[ I'm CC'ing the mailing list, so that other people can read my answer
and don't need to ask the same question again. ]
On Fri, Mar 22, 2013 at 03:58:25PM +0800, 明白了 wrote:
> Hello,Jonathan:
> I want to know if I can carry out a single-step debugging and
> view which step the program run.If ok, what should I do.
Single-stepping through a program would require klee to have an inter-
active user interface, which it doesn't have AFAIK.
But you can tell klee to output every LLVM instruction that is executed
using the "-debug-print-instructions" command line option. This feature
has a little bug, though, which can be fixed by the following patch:
------------------------------------------------------------------------
commit 5c5214276946e72822d67e9d681703e5cf310f7a
Author: Jonathan Neuschäfer <j.neuschaefer at gmx.net>
Date: Wed Oct 24 20:00:00 2012 +0200
klee -debug-print-instructions: add a newline character
diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp
index 968283b..48aee24 100644
--- a/lib/Core/Executor.cpp
+++ b/lib/Core/Executor.cpp
@@ -1174,7 +1174,7 @@ void Executor::stepInstruction(ExecutionState &state) {
if (DebugPrintInstructions) {
printFileLine(state, state.pc);
std::cerr << std::setw(10) << stats::instructions << " ";
- llvm::errs() << *(state.pc->inst);
+ llvm::errs() << *(state.pc->inst) << '\n';
}
if (statsTracker)
------------------------------------------------------------------------
It currently does not show you which of the execution states executed
the instruction.
HTH,
Jonathan Neuschäfer
More information about the klee-dev
mailing list