How to increase number of Call Stack entries in Google Chrome Developer Tools (or Firefox Firebug)? I am getting a Javascript error in a third party control's Javascript. All the calls in the Call Stack window do not belong to my own code. I want to know which line in my code triggered the sequence of events. The Call Stack is not large enough to display something from my own code.
- If you put a breakpoint in the earliest call, can you see what came before it?dontGoPlastic– dontGoPlastic2012-03-29 18:45:59 +00:00Commented Mar 29, 2012 at 18:45
- For testing you can try to up the js stack size: code.google.com/p/v8/issues/detail?id=1631abergmeier– abergmeier2012-08-03 08:12:11 +00:00Commented Aug 3, 2012 at 8:12
3 Answers
Chrome solution
https://v8.dev/docs/stack-trace-api
can set via commandline on startup --js-flags="--stack-trace-limit <value>"
or at runtime at loading a page:
Error.stackTraceLimit = Infinity //unlimited stack trace NOTE that this no longer works:
Error.stackTraceLimit = undefined // no stack trace at all! (same as 0) 9 Comments
open -a Google\ Chrome --args --js-flags="--stack-trace-limit 50" but the stack trace still stops at 10Error.stackTraceLimit=50Error.stackTraceLimit doesn't work anymore.Error.stackTraceLimit property works on Chrome 60. Running on Ubuntu.In Chrome (also in node), you can type this in the js console:
Error.stackTraceLimit = Infinity; Alternatively see this page for Chrome command line flags: https://v8.dev/docs/stack-trace-api (need to restart Chrome):
$ google-chrome --js-flags="--stack-trace-limit 10000" Comments
I don't think there's a limit on call stack size*). Usually a stack trace that seems to come out of nowhere results from either
- an event listener
- a timeout (
window.setTimeout) - an interval (
window.setInterval) - some script loading after page has loaded (possibly iframe)
*) Of course, technically there certainly is some limit, but I gues it's practically irrelevant. Probably longint or something.
edit: From Firebug source code:
if (trace.frames.length > 100) // TODO in the loop above { var originalLength = trace.frames.length; trace.frames.splice(50, originalLength - 100); var excuse = "(eliding "+(originalLength - 100)+" frames)"; trace.frames[50] = new StackFrame.StackFrame({href: excuse}, 0, excuse, [], null, null, context); } So Firebug will always show the first 50 and the last 50 items ("frames") of the call stack.
1 Comment
setTimeout). That said - for a third party script I do not really have a good idea how to solve it.