5299e5ba0d
Add reasonable behavior for stepping within continuations (generators). Stepping over a yield now does what one would expect. When the generator is driven from a C++ extension like ASIO, the next logical execution point is after the yield statement, and that's where we'll stop now. When driven from PHP, say in a loop calling send(), the next execution point is in fact the call site of send(), so we go there. Stepping off the end of the generator function, goes to the caller of send(), or the caller of the C++ extension. Stepping _out_ of a generator driven by a C++ extension ensures that we go to the caller and not back into the generator again. The logic for both cases is exactly the same. The difference comes from the fact that we don't actually debug C++ extensions. This also fixes a long-standing problem where breakpoints would interfere with control flow cmds on the same source line. This caused funny behavior, like taking multiple steps to get off of a breakpoint.
31 linhas
185 B
Plaintext
31 linhas
185 B
Plaintext
run
|
|
break flow_gen.php:12
|
|
@test(1)
|
|
next
|
|
next
|
|
next
|
|
next
|
|
next
|
|
next
|
|
step
|
|
step
|
|
step
|
|
step
|
|
next
|
|
next
|
|
next
|
|
next
|
|
next
|
|
next
|
|
step
|
|
step
|
|
step
|
|
step
|
|
next
|
|
next
|
|
next
|
|
next
|
|
break clear all
|
|
continue
|
|
quit
|