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.
Created attachment 631044 [details] [diff] [review] WIP 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.
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
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
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.