var s = ''; try{ throw Error("whatever"); }catch(e){ s = e.stack; } // lines are like: bu_getCurrentScriptURI_spidermonkey("ScriptLoader.js")@burst/Runtime.js:101 var matches = s.match(/[^@]*\.js/gi|>); if(!matches){ throw Error("could not parse stack string: '" + s + "'"); } var fname = (typeof depth != 'undefined' && depth) ? matches[depth + 1] : matches[matches.length - 1]; if(!fname){ throw Error("could not find file name in stack string '" + s + "'"); } //print("SpiderMonkeyRuntime got fname '" + fname + "' from stack string '" + s + "'"); return fname;