Can't set breakpoint in Script Debugger

RESOLVED FIXED in Firefox 15



Developer Tools: Debugger
5 years ago
5 years ago


(Reporter: harth, Assigned: past)


Firefox 16
Mac OS X
Dependency tree / graph

Firefox Tracking Flags

(firefox15 fixed)



(1 attachment, 1 obsolete attachment)



5 years ago
1) visit
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

Dot appears to left of line number and breakpoint set

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
Depends on: 761223
Created attachment 631044 [details] [diff] [review]

This patch fixes almost all problems for me, but I need to keep working on it a bit more.
Created attachment 631404 [details] [diff] [review]
Patch v2

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.
tracking-firefox15: --- → ?
Comment on attachment 631404 [details] [diff] [review]
Patch v2

Attachment #631404 - Flags: review?(rcampbell) → review+
Whiteboard: [land-in-fx-team]
Whiteboard: [land-in-fx-team] → [fixed-in-fx-team]
Last Resolved: 5 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+
status-firefox15: --- → affected
tracking-firefox15: ? → +
status-firefox15: affected → fixed
tracking-firefox15: + → ---
You need to log in before you can comment on or make changes to this bug.