[lldb-dev] negative in stop reason

Jian Liu/Gmail via lldb-dev lldb-dev at lists.llvm.org
Fri Nov 17 20:10:13 PST 2017


2017-11-18 3:49 GMT+08:00 Jim Ingham <jingham at apple.com>:

> Negative breakpoint ID’s are used for breakpoints lldb sets for internal
> purposes. You can see the internal breakpoints with the “break list -i”
> command.
>
> “continue” doesn’t usually need to set internal breakpoints, however.  And
> we don’t usually tell you about internal breakpoint hits, especially if you
> hit a user breakpoint at the same time.  So that is a little curious.  But
> I also wonder if you are hitting this breakpoint over and over?


Hi Jim, Thanks for your reply. Yes, I have hit the breakpoint over and
over.

I replay the same debugging process again today. This time, the break point
is set as breakpoint 2 (not breakpoint 3 in my early email). When I input
"break list 2.1“, lldb shows:

(lldb) br list 2.1
2: file = 'Executor.cpp', line = 3222, exact_match = 0, locations = 1,
resolved = 1, hit count = 1
  2.1: where =
klee`klee::Executor::executeMemoryOperation(klee::ExecutionState&, bool,
klee::ref<klee::Expr>, klee::ref<klee::Expr>, klee::KInstruction*) + 39 at
Executor.cpp:3228, address = 0x0000000000547807, resolved, hit count = 1

When I use "continue" to let the program to go on, lld shows:

(lldb) br list 2.1
2: file = 'Executor.cpp', line = 3222, exact_match = 0, locations = 1,
resolved = 1, hit count = 1
  2.1: where =
klee`klee::Executor::executeMemoryOperation(klee::ExecutionState&, bool,
klee::ref<klee::Expr>, klee::ref<klee::Expr>, klee::KInstruction*) + 39 at
Executor.cpp:3228, address = 0x0000000000547807, resolved, hit count = 1

(lldb) n
Process 6706 stopped
* thread #1, name = 'klee', stop reason = breakpoint 2.1 -4.1
    frame #0:
klee`klee::Executor::executeMemoryOperation(this=0x0000000001278800,
state=0x000000000132d710, isWrite=true, address=ref<klee::Expr> @
0x00007fffffffd480, value=ref<klee::Expr> @ 0x00007fffffffd4b0,
target=0x0000000000000000) at Executor.cpp:3228
   3225                                      ref<Expr> value /* undef if
read */,
   3226                                      KInstruction *target /* undef
if write */) {
   3227  Expr::Width type = (isWrite ? value->getWidth() :
-> 3228                     getWidthForLLVMType(target->inst->getType()));
   3229  unsigned bytes = Expr::getMinBytesForWidth(type);
   3230  std::string name = "node";
   3231  if (SimplifySymIndices) {
(lldb)

Obviously, the program do NOT go on. As you said, internal breakpoints were
hit, because of a negative number "-4.1" in stop reason. When I input
"continue" again, it shows.

(lldb) n
Process 6706 stopped
* thread #1, name = 'klee', stop reason = breakpoint 2.1 -6.1
    frame #0:
klee`klee::Executor::executeMemoryOperation(this=0x0000000001278800,
state=0x000000000132d710, isWrite=true, address=ref<klee::Expr> @
0x00007fffffffd480, value=ref<klee::Expr> @ 0x00007fffffffd4b0,
target=0x0000000000000000) at Executor.cpp:3228
   3225                                      ref<Expr> value /* undef if
read */,
   3226                                      KInstruction *target /* undef
if write */) {
   3227  Expr::Width type = (isWrite ? value->getWidth() :
-> 3228                     getWidthForLLVMType(target->inst->getType()));
   3229  unsigned bytes = Expr::getMinBytesForWidth(type);
   3230  std::string name = "node";
   3231  if (SimplifySymIndices) {

The negative number in stop reason becomes to "-6.1". When I query internal
breakpoints with the “break list -i” command, it shows.

(lldb) break list -i
Current breakpoints:
Kind: shared-library-event
-1: address = klee[0x00000000005361a0], locations = 1 Options: disabled
one-shot

  -1.1: where = klee`_start, address = 0x00000000005361a0, unresolved, hit
count = 1

Kind: shared-library-event
-2: address = ld-linux-x86-64.so.2[0x0000000000011060], locations = 1,
resolved = 1, hit count = 0

  -2.1: where = ld-linux-x86-64.so.2`_dl_debug_state, address =
0x00007ffff7de8060, resolved, hit count = 0

Kind: step-out
-6: address = klee[0x0000000000547807], locations = 1, resolved = 1, hit
count = 1 Options: enabled tid: 0x1a32
  -6.1: where =
klee`klee::Executor::executeMemoryOperation(klee::ExecutionState&, bool,
klee::ref<klee::Expr>, klee::ref<klee::Expr>, klee::KInstruction*) + 39 at
Executor.cpp:3228, address = 0x0000000000547807, resolved, hit count = 1

I can not understand outputs from "break list -i” command. I wonder how to
let the program to go on. BTW, I use lldb-4.0 in Ubuntu 16.04 AMD64.

-Jian








> What is the hit count on breakpoint 3?  You can see this in the output of
> “break list 3.1"
>
> Jim
>
>
> > On Nov 16, 2017, at 6:20 PM, Jian Liu/Gmail via lldb-dev <
> lldb-dev at lists.llvm.org> wrote:
> >
> >
> > Dear all,
> >
> >     I have just debug KLEE with lldb. A breakpoint was set on the
> function "executeAllocUnbounded". After the breakpoint was hiited, I used
> "continue" to let the program to go on. However, it did not work. The
> respose from lldb is following:
> >
> > (lldb)
> > Process 10254 stopped
> > * thread #1, name = 'klee', stop reason = breakpoint 3.1 -1364.1
> >     frame #0: klee`klee::Executor::executeAl
> locUnbounded(this=0x0000000001278800, state=0x000000000132d710, size=4,
> target=0x000000000134ef00) at Executor.cpp:3036
> >
> > NOTE that, there is a negative number "-1364.1" showed in stop reason.
> When I hit "continue" again, the number was change to "-1366.1", by mius -2
> >
> > I want to know what is the mean of "-1364.1" here. How to let the
> program to continue. Thanks.
> >
> > ---
> > Jian Liu
> >
> >
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
>


-- 
---
Jian Liu

Institute of Information Engineering, Chinese Academy of Sciences.
Beijing China.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20171118/2906e0d3/attachment.html>


More information about the lldb-dev mailing list