[lldb-dev] [Bug 30863] New: "Step" doesn't stop with conditional breakpoint on the next line

via lldb-dev lldb-dev at lists.llvm.org
Tue Nov 1 12:42:53 PDT 2016


https://llvm.org/bugs/show_bug.cgi?id=30863

            Bug ID: 30863
           Summary: "Step" doesn't stop with conditional breakpoint on the
                    next line
           Product: lldb
           Version: 3.9
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: lldb-dev at lists.llvm.org
          Reporter: eldar.abusalimov at jetbrains.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Extracted from https://youtrack.jetbrains.com/issue/CPP-7986 Conditional Break
Point

To see the issue, set a Conditional Break at each of the comments tagged `CB`
with the expressions to the right of the colon.

Note that the second CB is not going to be hit naturally since `i` never
changes to 2, this is correct. When the first breakpoint is hit, use `step` to
attempt to move to the next line. It should maintain the debug mode and wait
for more instructions on the next line, but instead it checks the CB and
notices that it is not true and continues until the break point on the return
statement.


```
#include <stdio.h>

int main() {
    int i = 1;

    printf("i: %d", i);  // CB: i == 1 // true
    printf("i: %d", i);  // CB: i == 2 // false

    return 0;
}
```

Debug session:

```
$ lldb hello
(lldb) target create "hello"
Current executable set to 'hello' (x86_64).
(lldb) br s -f main.c -l 6 -c 'i == 1'
Breakpoint 1: where = hello`main + 15 at main.c:6, address = 0x0000000000400535
(lldb) br s -f main.c -l 7 -c 'i == 2'
Breakpoint 2: where = hello`main + 35 at main.c:7, address = 0x0000000000400549
(lldb) r
Process 9877 launched: '/home/mint/ClionProjects/hello/cmake-build-debug/hello'
(x86_64)
Process 9877 stopped
* thread #1: tid = 9877, 0x0000000000400535 hello`main + 15 at main.c:6, name =
'hello', stop reason = breakpoint 1.1
    frame #0: 0x0000000000400535 hello`main + 15 at main.c:6
   3       int main() {
   4           int i = 1;
   5       
-> 6           printf("i: %d", i);
   7           printf("i: %d", i);
   8       
   9           return 0;
(lldb) s
Process 9877 exited with status = 0 (0x00000000) 
(lldb)  
```

Everything works fine in case the condition of the second breakpoint evaluates
to `true`.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20161101/eeb11ea1/attachment.html>


More information about the lldb-dev mailing list