On Wed, Feb 28, 2024 at 10:02 AM Adrian Prantl <apra...@apple.com> wrote:
>
>
>
> On Feb 27, 2024, at 1:53 PM, Kyle Huey via Dwarf-discuss 
> <dwarf-discuss@lists.dwarfstd.org> wrote:
>
> Put another way (forgive my pseudo code), if you have
>
> function silly_print() {
>     delay = rand();
>     // Point 1
>     async_sleep(delay).await;
>     // Point 2
>     printf("Hello" );
> }
>
> function do_stuff() {
>     runtime.async_dispatch(silly_print());
>     runtime.async_dispatch(silly_print());
> }
>
> When stepping from point 1 to point 2, the breakpoint on the post-await 
> funclet at point 2 has to be conditional on being on the async_context being 
> the same async_context the debugger was using at point 1, right? And then you 
> have to be able to determine what the "same async_context" is.
>
>
>
> LLDB implements this in a custom stepping plan that creates a conditional 
> breakpoint where two async contexts are compared: First, there's the active 
> async context at the time of the step. Next, the active async context at the 
> time the breakpoint is hit. If the two async contexts are equal, then the 
> breakpoint is discarded and the step has completed.
>
> -- adrian

Right, that makes sense. What is "are equal" here? Just a pointer comparison?

- Kyle
-- 
Dwarf-discuss mailing list
Dwarf-discuss@lists.dwarfstd.org
https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss

Reply via email to