<html>
<head>
<base href="http://llvm.org/bugs/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - LLDB does not stop at breakpoint on resumed-to instruction (on FreeBSD) -- ThreadPlanStepOverBreakpoint skips subsequent braeakpoint"
href="http://llvm.org/bugs/show_bug.cgi?id=19311">19311</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>LLDB does not stop at breakpoint on resumed-to instruction (on FreeBSD) -- ThreadPlanStepOverBreakpoint skips subsequent braeakpoint
</td>
</tr>
<tr>
<th>Product</th>
<td>lldb
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>FreeBSD
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>All Bugs
</td>
</tr>
<tr>
<th>Assignee</th>
<td>lldb-dev@cs.uiuc.edu
</td>
</tr>
<tr>
<th>Reporter</th>
<td>emaste@freebsd.org
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr></table>
<p>
<div>
<pre>Consider this sample code:
(lldb) list 1
1 int
2 main(int argc, char *argv[])
3 {
4 int i = 0;
5 i++;
6 i++;
7 i++;
8 i++;
9 i++;
10 }
(lldb) disass -b -n main
inc`main at inc.c:3:
0x4005b0: 55 pushq %rbp
0x4005b1: 48 89 e5 movq %rsp, %rbp
0x4005b4: 89 7d ec movl %edi, -0x14(%rbp)
0x4005b7: 48 89 75 e0 movq %rsi, -0x20(%rbp)
0x4005bb: c7 45 fc 00 00 00 00 movl $0x0, -0x4(%rbp)
0x4005c2: 83 45 fc 01 addl $0x1, -0x4(%rbp)
0x4005c6: 83 45 fc 01 addl $0x1, -0x4(%rbp)
0x4005ca: 83 45 fc 01 addl $0x1, -0x4(%rbp)
0x4005ce: 83 45 fc 01 addl $0x1, -0x4(%rbp)
0x4005d2: 83 45 fc 01 addl $0x1, -0x4(%rbp)
0x4005d6: c9 leave
0x4005d7: c3 retq
Set breakpoints on source lines 5, 6, 7, 8, which are also contiguous assembly
instructions.
(lldb) break list
Current breakpoints:
1: file = '/tank/emaste/src/llvm/build-nodebug/inc.c', line = 5, locations = 1,
resolved = 1, hit count = 2
1.1: where = inc`main + 18 at inc.c:5, address = 0x00000000004005c2,
resolved, hit count = 2
2: file = '/tank/emaste/src/llvm/build-nodebug/inc.c', line = 6, locations = 1,
resolved = 1, hit count = 0
2.1: where = inc`main + 22 at inc.c:6, address = 0x00000000004005c6,
resolved, hit count = 0
3: file = '/tank/emaste/src/llvm/build-nodebug/inc.c', line = 7, locations = 1,
resolved = 1, hit count = 0
3.1: where = inc`main + 26 at inc.c:7, address = 0x00000000004005ca,
resolved, hit count = 0
4: file = '/tank/emaste/src/llvm/build-nodebug/inc.c', line = 8, locations = 1,
resolved = 1, hit count = 0
4.1: where = inc`main + 30 at inc.c:8, address = 0x00000000004005ce,
resolved, hit count = 0
(lldb) run
Process 20339 launching
Process 20339 stopped
Process 20339 launched: '/tank/emaste/src/llvm/build-nodebug/inc' (x86_64)
Process 20339 stopped
* thread #1: tid = 103570, 0x00000000004005c2 inc`main(argc=1,
argv=0x00007fffffffd558) + 18 at inc.c:5, stop reason = breakpoint 1.1
frame #0: 0x00000000004005c2 inc`main(argc=1, argv=0x00007fffffffd558) + 18
at inc.c:5
2 main(int argc, char *argv[])
3 {
4 int i = 0;
-> 5 i++;
6 i++;
7 i++;
8 i++;
At this point "continue" should stop at the breakpoint on line 6, but instead
ThreadPlanStepOverBreakpoint disables, steps over, and re-enables each
breakpoint in turn.
(lldb) c
Process 20339 resuming
Process 20339 exited with status = 255 (0x000000ff)
output from "log enable lldb step" for the first two breakpoints (the correctly
stepped-over one at line 5, and the skipped one at line 6):
(lldb) c
Process::PrivateResume() m_stop_id = 4, public state: stopped private state:
stopped
Thread::PushPlan(0x0x808f4a000): "Single stepping past breakpoint site 32 at
0x4005c2", tid = 0x18d57.
WillResume Thread #1 (0x0x808f4a000): tid = 0x18d57, pc = 0x004005c2, sp =
0x7fffffffd500, fp = 0x7fffffffd500, plan = 'Step over breakpoint trap', state
= stepping, stop others = 1
Process thinks the process has resumed.
Current Plan for thread 1(0x808f4a000) (0x18d57, stepping): Step over
breakpoint trap being asked whether we should report run.
Process 20344 resuming
ThreadList::ShouldStop: 1 threads
Thread::ShouldStop(0x808f4a000) for tid = 0x18d57 0x18d57, pc =
0x00000000004005c6
^^^^^^^^ Thread::ShouldStop Begin ^^^^^^^^
Plan stack initial state:
Plan Stack for thread #1: tid = 0x18d57, stack_size = 2
Element 1: Single stepping past breakpoint site 32 at 0x4005c2
Element 0: Base thread plan.
Plan Step over breakpoint trap explains stop, auto-continue 1.
Plan Step over breakpoint trap should stop: 0.
Completed step over breakpoint plan.
Popping plan: "Step over breakpoint trap", tid = 0x18d57.
Plan stack final state:
Plan Stack for thread #1: tid = 0x18d57, stack_size = 1
Element 0: Base thread plan.
Completed Plan Stack: 1 elements.
Element 0: Single stepping past breakpoint site 32 at 0x4005c2
vvvvvvvv Thread::ShouldStop End (returning 0) vvvvvvvv
ThreadList::ShouldStop overall should_stop = 0
ThreadList::ShouldReportStop 1 threads
Thread::ShouldReportStop() tid = 0x18d57: returning vote for complete stack's
back plan
ThreadPlan::ShouldReportStop() returning vote: no
ThreadList::ShouldReportStop returning no
Process::PrivateResume() m_stop_id = 5, public state: running private state:
stopped
Thread::PushPlan(0x0x808f4a000): "Single stepping past breakpoint site 33 at
0x4005c6", tid = 0x18d57.
WillResume Thread #1 (0x0x808f4a000): tid = 0x18d57, pc = 0x004005c6, sp =
0x7fffffffd500, fp = 0x7fffffffd500, plan = 'Step over breakpoint trap', state
= stepping, stop others = 1
Process thinks the process has resumed.
ThreadList::ShouldStop: 1 threads
Thread::ShouldStop(0x808f4a000) for tid = 0x18d57 0x18d57, pc =
0x00000000004005ca
^^^^^^^^ Thread::ShouldStop Begin ^^^^^^^^
Plan stack initial state:
Plan Stack for thread #1: tid = 0x18d57, stack_size = 2
Element 1: Single stepping past breakpoint site 33 at 0x4005c6
Element 0: Base thread plan.
Plan Step over breakpoint trap explains stop, auto-continue 1.
Plan Step over breakpoint trap should stop: 0.
Completed step over breakpoint plan.
Popping plan: "Step over breakpoint trap", tid = 0x18d57.
Plan stack final state:
Plan Stack for thread #1: tid = 0x18d57, stack_size = 1
Element 0: Base thread plan.
Completed Plan Stack: 1 elements.
Element 0: Single stepping past breakpoint site 33 at 0x4005c6
vvvvvvvv Thread::ShouldStop End (returning 0) vvvvvvvv
ThreadList::ShouldStop overall should_stop = 0
ThreadList::ShouldReportStop 1 threads
Thread::ShouldReportStop() tid = 0x18d57: returning vote for complete stack's
back plan
ThreadPlan::ShouldReportStop() returning vote: no
ThreadList::ShouldReportStop returning no
Process::PrivateResume() m_stop_id = 6, public state: running private state:
stopped
Thread::PushPlan(0x0x808f4a000): "Single stepping past breakpoint site 34 at
0x4005ca", tid = 0x18d57.
WillResume Thread #1 (0x0x808f4a000): tid = 0x18d57, pc = 0x004005ca, sp =
0x7fffffffd500, fp = 0x7fffffffd500, plan = 'Step over breakpoint trap', state
= stepping, stop others = 1
Process thinks the process has resumed.
ThreadList::ShouldStop: 1 threads
Thread::ShouldStop(0x808f4a000) for tid = 0x18d57 0x18d57, pc =
0x00000000004005ce
^^^^^^^^ Thread::ShouldStop Begin ^^^^^^^^
Plan stack initial state:
Plan Stack for thread #1: tid = 0x18d57, stack_size = 2
Element 1: Single stepping past breakpoint site 34 at 0x4005ca
Element 0: Base thread plan.
Plan Step over breakpoint trap explains stop, auto-continue 1.
Plan Step over breakpoint trap should stop: 0.
Completed step over breakpoint plan.
Popping plan: "Step over breakpoint trap", tid = 0x18d57.
Plan stack final state:
Plan Stack for thread #1: tid = 0x18d57, stack_size = 1
Element 0: Base thread plan.
Completed Plan Stack: 1 elements.
Element 0: Single stepping past breakpoint site 34 at 0x4005ca
vvvvvvvv Thread::ShouldStop End (returning 0) vvvvvvvv</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>