问题标签 [callstack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4553 浏览

c# - 调用堆栈中的“[轻量级函数]”

我正在调试一个程序(VS2008),并且我正在逐步执行代码行。我遇到了正在调用委托函数的一行,我试图进入它。然而,不是像我预期的那样进入该方法,而是绕过了该方法,而调试器则进入了我认为是委托调用的函数。在调用堆栈中,我期望委托方法所在的行与 text 一起显示为灰色[Lightweight Function]

“轻量级功能”部分是什么意思?有没有办法进入这个功能?

0 投票
2 回答
4525 浏览

python - 在 Python 中确定特定函数是否在堆栈上的有效方法

对于调试,判断一个特定函数是否在调用堆栈上更高通常很有用。例如,我们经常只想在某个函数调用我们时运行调试代码。

一种解决方案是检查所有更高的堆栈条目,但这是在堆栈深处并重复调用的函数中,这会导致过多的开销。问题是找到一种方法,使我们能够以合理有效的方式确定特定函数是否在调用堆栈上更高。

相似的

0 投票
1 回答
829 浏览

.net - 调用堆栈上的异常处理堆栈帧的顺序

在 C# 中,异常处理堆栈帧被推送到调用堆栈的顺序是什么。如果我有一个方法:

是否为每个异常处理程序创建了一个单独的堆栈帧,如下所示?

或者

或者

别的东西?

0 投票
1 回答
572 浏览

gdb - 在 gdb 6.3 中的多个堆栈之间切换

程序中有两个堆栈:一个是由操作系统创建的,第二个是由程序本身创建的,用于运行一些代码。

当程序在第二个堆栈崩溃时,我想切换到 gdb 中的主堆栈并查看回溯。可能吗?

我试图将 rsp 保存到一个变量并在崩溃后对其进行更改,但结果回溯不正确。我认为 gdb 无法区分堆栈中的帧。

0 投票
3 回答
1117 浏览

c - 谁负责清理?

我想知道哪个负责清理堆栈

假设你有一个 fun 函数,可以这样说:

什么时候fun被调用,它将与参数一起进入堆栈,然后当函数返回时,负责清理堆栈的人是它自己的函数还是将保存返回值的“var”。

还有一件事,任何人都可以解释调用约定的概念吗?

0 投票
2 回答
373 浏览

functional-programming - 没有调用堆栈的架构中的尾调用

我对最近关于 GOTO 和尾递归的问题的回答是用调用堆栈来表达的。我担心它不够通用,所以我问你:尾调用(或等效)的概念在没有调用堆栈的架构中如何有用?

在继续传递中,所有被调用的函数都会替换调用函数,因此是尾调用,因此“尾调用”似乎不是一个有用的区别。在基于消息传递和事件的体系结构中,似乎没有等价物,但如果我错了,请纠正我。后两种架构是有趣的案例,因为它们与 OOP 而不是 FP 相关联。其他架构呢?旧的 Lisp 机器是基于调用堆栈的吗?

编辑:根据“ What the heck is: Continuation Passing Style (CPS) ”(以及下面的 Alex),连续传递下的尾调用的等价物不是“被调用函数替换调用函数”而是“调用函数传递了它是给定的,而不是创造一个新的延续”。与我所断言的不同,这种尾调用很有用。

另外,我对在较低级别使用调用堆栈的系统不感兴趣,因为较高级别不需要调用堆栈。这个限制不适用于亚历克斯的回答,因为他写的是其他调用架构(这是正确的术语吗?)通常有一个等效的调用堆栈,而不是他们在引擎盖下的某个地方有一个调用堆栈。在连续通过的情况下,结构就像一个树状结构,但边缘方向相反。调用堆栈等价物与我的兴趣高度相关。

0 投票
3 回答
1650 浏览

c# - IIS/asp.net 中的静态方法和调用堆栈

理论问题。如果您有 100 个单独的请求进入调用下面静态方法的 aspx 网页。

每个请求都有单独的调用堆栈吗?

如果是这样 - 这个静态方法调用是否被推送到这些单独的调用堆栈上?

如果是这样-因此这些整数线程安全吗?IE。100 个请求,100 个调用帧,300 个整数。

干杯

0 投票
5 回答
8683 浏览

debugging - 为什么 Minidumps 不提供良好的调用堆栈?

多年来,我在许多游戏项目中使用了 minidump,它们似乎有大约 50% 的机会拥有有效的调用堆栈。我能做些什么来让他们有更好的调用堆栈?

我尝试将最新的 dbghelp.dll 放在 exe 目录中。这似乎对一些人有所帮助。

Visual Studio 2008 或 2010 更好吗?(我仍在使用 VS 2005)。

我使用的代码看起来像这个示例

0 投票
1 回答
186 浏览

stack-trace - 如何在 Specman 中获取堆栈跟踪?

有没有办法在 Specman 中获取堆栈跟踪?我修补了强制信号的功能,以便在强制信号时告诉我。我希望能够说出强迫的起源

0 投票
2 回答
927 浏览

asp.net - 使用 Mdbg 的 ASP.NET 的基于 Web 的堆栈转储工具?

MySpace.com的首席系统架构师 Dan Farino做了一个精彩的演示,展示了一个基于 Web 的堆栈转储工具,该工具对给定进程中运行的所有线程进行分类(它们在做什么、它们执行了多长时间等) .)

highscalability.com上也总结了他们的技术:

  • 性能收集器
    通过 UDP 集中收集性能数据。比 Windows 更可靠,允许任何客户端连接并查看统计信息。
  • 基于 Web 的堆栈转储工具。
    可以右键单击问题服务器并获取 .Net 托管线程的堆栈转储。过去必须 RDC 进入系统并附加调试器,然后 1/2 得到答案。缓慢、不可扩展且乏味。不仅仅是堆栈转储,还提供了有关线程正在做什么的大量上下文。故障排除更容易,因为您可以看到数据库上有 90 个线程被阻塞,因此数据库可能已关闭。
  • Web 基础堆转储工具。
    转储所有内存分配。对开发人员非常有用。节省手工操作的时间。• 探查器。从头到尾跟踪请求并生成报告。查看 URL、方法、状态,以及所有可以帮助您识别缓慢请求的内容。查看锁争用,是否有很多异常被抛出,任何可能有趣的东西。重量很轻。它在生产中的每个 VIP(100 台服务器组)的一个盒子上运行。每 10 秒采样 1 个线程。始终在后台跟踪。

问题是:为 ASP.NET 构建基于 Web 的堆栈转储工具需要哪些工具?为方便起见,我们假设目标 AppDomain 中托管的 *.aspx 能够输出该进程中的所有托管调用堆栈就足够了。

有几篇文章介绍了Mdbg(完全用 C#/IL 编写的托管代码的调试器,开始随 CLR 2 SDK 一起提供)和通常位于 C:\Program Files\Microsoft Visual Studio 8\SDK\ 中的mdbgcore程序集的使用。 v2.0\斌:

解决方案是否会简单地引用此程序集来产生所需的输出?“列出所有托管调用堆栈”操作会对为生产流量提供服务的正在运行的进程产生什么影响?