问题标签 [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 投票
9 回答
45280 浏览

assembly - 大多数现代系统中堆栈增长的方向是什么?

我正在准备一些 C 语言培训材料,我希望我的示例适合典型的堆栈模型。

C 堆栈在 Linux、Windows、Mac OSX(PPC 和 x86)、Solaris 和最新的 Unix 中的发展方向是什么?

0 投票
4 回答
6239 浏览

ms-access - 如何检查调用堆栈

是否可以CallStack在 VBA 中看到 MS Access 2003?也就是说,能不能从叫什么看procedurefunctionfunction

0 投票
2 回答
884 浏览

c++ - 如何计算调用堆栈帧的数量?

对于 C++ 调试应用程序,我希望能够轻松计算调用堆栈帧的数量。是否有操作系统功能可以做到这一点?

我需要这个用于 Windows 和 Posix,即跨平台。一个或两个平台的解决方案都会很棒。

我可以遍历堆栈以找到所有帧,但我想知道是否有一个简单的调用来执行此操作。

0 投票
5 回答
1081 浏览

perl - 如何检测 Perl 中的递归包调用?

我有一个 Perl 项目,如果我只是通过循环包调用遇到问题。下面的代码演示了这个问题。

执行此操作时,每个包将调用另一个包,直到耗尽计算机的所有内存并锁定。我同意这是一个糟糕的设计,并且不应在设计中进行这样的循环调用,但我的项目足够大,我想在运行时检测到这一点。

我已经阅读了有关弱化函数和 Data::Structure::Util 的信息,但我还没有想出一种方法来检测是否存在循环包加载(我假设,因为每次迭代都会制作一个新副本并存储在 $this 哈希的每个副本中)。有任何想法吗?

0 投票
3 回答
9213 浏览

c - 如何检测堆栈溢出的点

我的 C 程序有以下问题: 某处是堆栈溢出。尽管在没有优化和调试器符号的情况下进行编译,但程序会以以下输出退出(在 Linux 上的 gdb 内部或外部):

程序因信号 SIGSEGV、分段错误而终止。该程序不再存在。

我可以检测到这实际上是堆栈溢出的唯一方法是通过 valgrind 运行程序。有什么办法可以强制操作系统转储调用堆栈跟踪,这将帮助我找到问题?

可悲的是,gdb 也不允许我轻松进入该程序。

0 投票
4 回答
144 浏览

callstack - 重构和增加调用堆栈之间的最佳权衡是什么?

我正在考虑将许多大型(1000 多行)方法重构为漂亮的块,然后可以酌情进行单元测试。

这让我开始思考调用堆栈,因为我的许多重构块中都有其他重构块,而且我的大型方法很可能已被其他大型方法调用。

我想打开它进行讨论,看看重构是否会导致调用堆栈问题。我怀疑在大多数情况下它会,但想知道重构的递归方法以及是否有可能在不创建无限循环的情况下导致堆栈溢出?

0 投票
2 回答
390 浏览

c - C:函数调用不同模块后传递的参数为 NULL 的原因

我在 C 程序中有一个奇怪的行为。我在名为 foo.c 的文件中将一些参数传递给具有以下签名的函数:

现在,当我从另一个包含 foo.h 的 C 文件中调用此函数时,例如:

在 foo first 中,a、b、c 是正确的,但 last 始终为 NULL。我使用哪种类型作为最后一个参数或从哪里调用此函数(即使直接在 main 中没有任何先前的操作)都没有关系。这些文件在一个可执行文件中编译并链接在一起。当我将 foo () 放在同一个源文件中时,一切正常。

有谁知道当函数外包时最后一个参数为 NULL 的原因可能是什么?

0 投票
3 回答
3775 浏览

visual-studio-2005 - 如何获取间歇性崩溃 devenv.com 的调用堆栈?

我有一个夜间构建 DOS 批处理脚本,它调用 devenv.exe 来构建解决方案文件。我间歇性地观察到 devenv.com 崩溃。我得到一个 DW20.exe“分享你的痛苦”对话框。

1)如果按下调试按钮,我不会看到通常的“选择您的调试器”窗口。相反,它什么也不做。

2) 如果我启动 Visual Studio 并尝试附加到 devenv.com,它说应用程序似乎已死锁或等待操作完成。(我认为是因为它是由 DW20.exe 调试的)

你会建议我做什么来获得一个体面的调用堆栈?

编辑

我成功地让 WinDBG 附加。执行了 k 命令。以下看起来是否有意义,可以传递给编译器团队?有没有办法查看当前的异常?

我正在努力!analyze -v工作。

编辑 2

我发现 WinDBG 有这些很棒的 SOS 扩展。显然我可以使用它们来调试 C# 编译器...

我仍在寻找一种检查异常内容的方法。!PrintException 没有发现任何异常。

0 投票
4 回答
78783 浏览

c - GCC __attribute__((aligned(x))) 是否对齐了堆栈变量?

我有以下代码:

我有以下输出:

为什么地址a[0]不是的倍数0x1000

究竟是__attribute__((aligned(x)))做什么的?我误解了这个解释?

我正在使用 gcc 4.1.2。

0 投票
2 回答
118 浏览

events - tinyos 中的事件是否在堆栈内发出信号?

我想问一些我认为在 tinyos2 编程手册中没有明确说明的问题。当命令或任务发出接口事件信号时,是立即调用连接函数,即在同一个调用堆栈中,还是这些信号事件“发布”以供以后执行?

我倾向于相信它是前一个,但只是为了澄清它。