Closed Bug 754251 Opened 9 years ago Closed 9 years ago

Can't set breakpoint in Script Debugger

Categories

(DevTools :: Debugger, defect, P2)

x86
macOS
defect

Tracking

(firefox15 fixed)

RESOLVED FIXED
Firefox 16
Tracking Status
firefox15 --- fixed

People

(Reporter: harth, Assigned: past)

References

Details

Attachments

(1 file, 1 obsolete file)

STR:
1) visit http://harthur.github.com/wwcode/
2) open Web Developer > Script Debugger
3) select "wwcode.js" to debug
4) try to set a breakpoint at line 35 by clicking to the left of the line number

Expected:
Dot appears to left of line number and breakpoint set

Actual:
No dot and no breakpoint set.
This will be fixed by bug 737808.

The problem is that when you first open the debugger, the script that corresponds to that piece of code is already GC'd. When you reload the page, we attach early and get a chance to get to the script. With the fix in that bug, the debugger frontend will allow you to set a breakpoint there, even though the debuggee won't stop until the page is reloaded.
Depends on: 737808
Priority: -- → P2
Assignee: nobody → past
Status: NEW → ASSIGNED
Depends on: 761223
Attached patch WIP (obsolete) — Splinter Review
This patch fixes almost all problems for me, but I need to keep working on it a bit more.
Attached patch Patch v2Splinter Review
So this patch fixes the test case, modulo one annoying issue: setting the breakpoint at line 35, makes it slide to line 36 after a reload (not visually, due to bug 737803). If however we reload the page once more, it slides again to line 37. From what I can see after instrumenting the code, SpiderMonkey no longer sees any bytecode in line 36 and the debugger server correctly slides the breakpoint forward. I don't know whether this is a normal optimization for forEach or not. jorendorff may be able to shed some light on this.

The patch fixes a couple of issues with the current code:
(a) updating the cached breakpoint when skipping forward
(b) iterating backwards over the breakpoint cache when setting breakpoints, in order to avoid messing with any cache updating due to (a)

I tried to write a test for breakpoints on startup, but apparently I can't get to the debuggee early enough on reload *for scripts served locally* to set the breakpoint (the script is already GC'd). I wonder if reinstating the workaround from bug 697040 would help with such a test.
Attachment #631044 - Attachment is obsolete: true
Attachment #631404 - Flags: review?(rcampbell)
Jason, see if the SpiderMonkey issue I mention in comment 3 makes any sense to you.
Comment on attachment 631404 [details] [diff] [review]
Patch v2

ok
Attachment #631404 - Flags: review?(rcampbell) → review+
Whiteboard: [land-in-fx-team]
https://hg.mozilla.org/integration/fx-team/rev/c823ffa89a33
Whiteboard: [land-in-fx-team] → [fixed-in-fx-team]
https://hg.mozilla.org/mozilla-central/rev/c823ffa89a33
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Whiteboard: [fixed-in-fx-team]
Target Milestone: --- → Firefox 16
Comment on attachment 631404 [details] [diff] [review]
Patch v2

[Approval Request Comment]
Bug caused by (feature/regressing bug #): new feature
User impact if declined: breakpoints will not work in some cases in the debugger
Testing completed (on m-c, etc.): on m-c
Risk to taking this patch (and alternatives if risky): I suppose in theory breakpoint handling could become more buggy, but this claim is unfounded 
String or UUID changes made by this patch: none
Attachment #631404 - Flags: approval-mozilla-aurora?
Comment on attachment 631404 [details] [diff] [review]
Patch v2

[Triage Comment]
Approving, there will be lots of time to watch this for any potential fallout.
Attachment #631404 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Product: Firefox → DevTools
You need to log in before you can comment on or make changes to this bug.