Tony_Henrich
Tony_Henrich

Reputation: 44165

How to increase number of Call Stack entries in Google Chrome Developer Tools (or Firefox)?

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.

Upvotes: 47

Views: 25505

Answers (3)

JasonS
JasonS

Reputation: 7733

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)

Upvotes: 33

Vlad A. Ionescu
Vlad A. Ionescu

Reputation: 2788

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"

Upvotes: 19

user123444555621
user123444555621

Reputation: 153184

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.

Upvotes: -2

Related Questions