草庐IT

callstack

全部标签

c# - 获取特定的 StackFrame 而不是 StackTrace.GetFrame 是否更便宜?

如果我只是想执行以下操作以查看是什么调用了我,varst=newStackTrace();varcallingMethod=st.GetFrame(1).GetMethod()只购买那个特定的框架会更便宜吗?varsf=newStackFrame(1);varcallingMethod=sf.GetMethod()我用下面的代码进行了测试,但我不确定我的方法是否合理。Stopwatchsw=Stopwatch.StartNew();for(inti=0;i我的方法(和结果)是否正确?编辑我会使用CallerInformation属性,但是,我暂时停留在.NET3.5中。

c# - 对于 C# 日志记录,如何以最小的开销获取调用堆栈深度?

我为Log4net创建了一个包装器(我可能会放弃支持NLog;我还没有决定),并且我缩进记录的消息结果以给出调用结构的想法。例如:2011-04-0300:20:30,271[CT]DEBUG-Merlinia.ProcessManager.CentralThread.ProcessAdminCommand-ProcStart-UserInfoRepository2011-04-0300:20:30,271[CT]DEBUG-Merlinia.ProcessManager.CentralThread.StartOneProcess-UserInfoRepository2011-04-0

c# - C# setter 中的堆栈溢出异常

这个有效:usingSystem;usingConstraintSet=System.Collections.Generic.Dictionary;namespaceConsoleApplication2{classtest{publicConstraintSeta{get;set;}publictest(){a=newConstraintSet();}staticvoidMain(string[]args){testabc=newtest();Console.WriteLine("done");}}}这不是:usingSystem;usingConstraintSet=System.

c# - 调用堆栈中的 "[Lightweight Function]"

我正在调试一个程序(VS2008),我正在单步执行代码行。我遇到了调用委托(delegate)函数的一行,我试图进入它。但是,该方法并没有像我预期的那样进入方法,而是被绕过了,调试器进入了我认为是委托(delegate)调用的函数。在调用堆栈中,我希望委托(delegate)方法所在的行显示为灰色,文本为[LightweightFunction]。“轻量级功能”部分是什么意思?有没有办法进入这个功能? 最佳答案 我相信轻量级函数是指DynamicMethod,即在运行时发出、使用然后卸载的一个。这篇博文与IronPython相关,但

Javascript 回溯

如何在Javascript中获取回溯?理想的特征:入口函数名称,或匿名函数的一些有意义的标识符,每个级别的参数列表,行号。这可以用标准的ECMAScript完成吗?如果没有,是否可以使用常见的网络浏览器方言完成?谢谢。编辑--感谢您的建议。我的方言不支持arguments.caller或arguments.callee。我能做到:try{letx=null;x.foo();}catch(e){debug(dump(e.stack));}这让我得到了字符串形式的信息,一目了然,但是走e.stack会很有帮助。它有标准形式吗?再次感谢。 最佳答案

javascript - JS : How long does it take to call a function?

因此,我正在编写2dJavascript物理模拟程序。性能很好,但我正在通过优化使其变得更好。因此,因为该程序涉及大量物理几何,所以我在程序中进行了几个勾股定理计算。总共大约有五次计算;它们一起运行大约每秒一百万次。所以,我想如果我把那个简单的勾股定理代码放到一个新函数中并调用它,它会提高性能;毕竟,这样浏览器就可以减少编译工作。因此,我在Firefox中运行代码并得到...该计算的执行时间增加4000000%。如何?这是相同的代码:Math.sqrt(x*x+y*y),那么将它作为函数添加是如何减慢速度的呢?我认为原因是一个函数需要时间来调用,而不是执行代码,并且每秒增加一百万个这样

javascript - 复杂的 JavaScript。什么叫我?

我正在从事的项目使用jQuery。我进行了一系列Ajax调用,加载()其他HTML片段,这些片段又加载()其他片段。整个事情令人困惑。我没有写代码。是否有任何工具可以让我遍历调用堆栈,以便确定调用方法的是什么?有什么浏览器工具可以帮助我解决这个问题吗?解决方案:最后,这是因为在服务器端代码中注入(inject)了$.ajaxSetup({async:false}); 最佳答案 Firebug有能力做到这一点。当调试器暂停时,Firebug会向您显示调用堆栈,这是一组当前正在运行并等待返回的嵌套函数调用。调用堆栈表示为工具栏中的一条紧

javascript - 调用 setTimeout 是否清除调用堆栈?

在javascript中可以通过setTimeout方法调用函数而不是直接调用函数来避免堆栈溢出吗?我对setTimeout的理解是它应该启动一个新的调用堆栈。当我查看chrome和IE的调用堆栈时,似乎setTimeout调用正在等待函数调用返回。这只是调试器的一个属性还是我的理解有问题?编辑虽然下面提供的答案是正确的,但我遇到的实际问题与我正在调用setTimeout(aFunction(),10)的事实有关,由于括号的缘故,它正在立即评估aFunction。Thisquestion把我整理出来。 最佳答案 我可以确认堆栈已被清

javascript - 递归 - 测试最大堆栈大小时调用堆栈无法弹出

基本上,当last-in函数调用返回。但是每当我尝试创建一个接近其最大值的调用堆栈时,一个uncaughtexpressionisgettingraised.//Codefortestingthestacksizevarcnt=0;functiontest(){//Maxstacksizeisnearerto~41800if(cnt++==41763){console.log('finished');returntrue;}returntest();}test();所以上面的代码在chromiumVersion49.0.2623.112m中为我抛出异常,如下所示,Uncaughtexc

javascript - 在断点处保持调用堆栈关闭

有没有办法让chrome开发工具中的调用堆栈面板保持折叠状态?每次我遇到断点时它都会扩展,迫使我向下滚动到范围。这使得调试非常缓慢,有时甚至令人恼火。谢谢/埃里克 最佳答案 这绝对是Chrome中的一个错误。已在thiscommit中修复截至2016年12月3日[DevTools]Don'texpandCallStackSidebarPaneonpauseifitwascollapsedBUG=656109应该很快就会降落在金丝雀:-) 关于javascript-在断点处保持调用堆栈关闭