-
Notifications
You must be signed in to change notification settings - Fork 336
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tracking bug for re-establishing breakpoints in debuggers #7231
Labels
screen: debugger
Issues with the Debugger screen
Comments
elliette
changed the title
Tracking bug for various breakpoint improvements
Tracking bug for re-establishing breakpoints in debuggers
Feb 15, 2024
This was referenced Feb 16, 2024
Since this requires coordination across multiple debugging clients, it makes sense to pin DWDS in g3 until everything is ready to land. |
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this issue
Feb 28, 2024
Bug: flutter/devtools#7231 Change-Id: I26b791e2f71aa8f696c65ff9a84f41f4b01e2a75 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/354782 Reviewed-by: Devon Carew <devoncarew@google.com> Commit-Queue: Elliott Brooks <elliottbrooks@google.com>
This was referenced Mar 26, 2024
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this issue
Apr 8, 2024
…nd pause-isolates-on-exit flags Bug: flutter/devtools#7231 Change-Id: I4665cce72ad9b505cbf513ea151698d5de4eb3f5 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/360441 Commit-Queue: Elliott Brooks <elliottbrooks@google.com> Reviewed-by: Ben Konyi <bkonyi@google.com>
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this issue
Apr 18, 2024
…ain is provided Bug: flutter/devtools#7231 Change-Id: Iebd1caa62cff4f41a226d7214c7a8ae330ed02c4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/355880 Reviewed-by: Nicholas Shahan <nshahan@google.com> Commit-Queue: Elliott Brooks <elliottbrooks@google.com>
This was referenced May 9, 2024
This was referenced Jul 10, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Spinning this off of dart-lang/webdev#2257, although this issue involves work for other systems besides DevTools. But I would like everything to be tracked in one place.
This all began because on web we were experiencing an issue of "phantom breakpoints" where a breakpoint that a user had removed was still being hit in Chrome, see dart-lang/webdev#2257. We would like to remove that behavior and have the debugging clients be the source of truth for breakpoints. However, while DAP clients re-establish breakpoints on hot-restart, DevTools does not.
On further investigation, we discovered that breakpoints set along the app's initial startup path in DevTools and in DAP clients don't always get hit on hot-restart or (for web) when users refresh the page. This is because breakpoints are re-set by the debugging client after the app's isolate has already started. Therefore, we want to use a combination of:
set_isolates_paused_on_start
- make sure the app initially starts out pausedrequirePermissionToResume(onPauseStart: true)
- make sure that all connected debugging clients usingset_isolates_paused_on_start
sendresume
event before resumingresume
after they have set breakpointsTherefore, the work required here:
Note: the following needs to be done before rolling unpinning DWDS and rolling it into google3. It was pinned here: dart-lang/sdk@4642c73
In DWDS:
setFlag
method forpause_isolates_on_start
(DONE: ImplementsetFlag
for 'pause_isolates_on_start' dart-lang/webdev#2373)main
ifpause-isolates-on-start
istrue
(DONE: During hot-restart, wait to runmain
whenpause_isolates_on_start
is true dart-lang/webdev#2378)pause_isolates_on_start
value from the DWDS dart-lang/webdev#2398)pauseIsolatesOnStart
optional (DONE: MakepauseIsolatesOnStart
an optional parameter to hot-restart dart-lang/webdev#2397)kPausePostRequest
event after restarting to notify clients to resume (DONE: Send akPausePostRequest
after restarting to notify clients to resume dart-lang/webdev#2441)getFlagList
API (DONE: Implement the VM servicegetFlagList
API dart-lang/webdev#2438)In DevTools:
setFlag('pause_isolates_on_start')
andrequirePermissionToResume(onPauseStart: true)
, then only resume once breakpoints are set (DONE: Configure DevTools to pause isolates on hot restart, and then only resume once breakpoints have been set #7234)In DDS:
requireUserPermissionToResume
andreadyToResume
(DONE BY @bkonyi): dart-lang/sdk@5536951)requireUserPermissionToResume
values from the VM service flags (DONE: dart-lang/sdk@9382e58)Note: This can be done after rolling DWDS into google3
In Flutter Engine:
[ ] Make surepause_isolates_on_start
is respected (see Setting flagpause_isolates_on_start
does not pause isolates on hot-restart dart-lang/sdk#54900, currently flutter_engine isn't respecting the flag so setting it in the VM Service doesn't do anything)In DAP:
requirePermissionToResume
andrequireUserPermissionToResume
foronPauseStart
andonPauseExit
so that DDS waits for DAP's permission before resuming the isolate (DONE: dart-lang/sdk@93556ae)Make sure
pause_isolates_on_start
is respected for hot-restarts and page refreshes for web (changes required in multiple locations):flutter_tools
(DONE:: Wait for aresume
event to run themain()
method after a page refresh dart-lang/webdev#2431)flutter_tools
(DONE: During hot-restart, wait to runmain
whenpause_isolates_on_start
is true dart-lang/webdev#2378)The text was updated successfully, but these errors were encountered: