问题标签 [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 回答
1492 浏览

assembly - 汇编器中的函数

我对堆栈的目的进行了一些哲学思考,经过一些编码后,我弄清楚了它的强度。唯一在我胃里的就是它是如何与功能一起工作的?我尝试使用通用寄存器创建一些简单的函数来添加两个数字,但我想这不是它在 C 中的工作方式,例如。所有参数、局部变量和结果存储在哪里?

您将如何将其重写为汇编程序?(C 的编译器将如何重写它?)

我知道这个例子有点糟糕..但是这样我就可以理解所有的可能性

0 投票
2 回答
2485 浏览

powershell - 抛出错误后powershell捕获调用堆栈

我想做这样的事情......

理想情况下,我想捕获函数和行号等的参数(就像您在 get-pscallstack 中看到的那样)
编辑:澄清一下,这是我想要的 powershell 堆栈跟踪,而不是 .NET
任何想法如何实现这一点?
戴夫

0 投票
2 回答
998 浏览

debugging - 如何在 Octave 的调试模式下查看堆栈跟踪

我在 Octave 的某些内部库函数中出现故障。我想调试调用函数,但我不知道该怎么做。

  • 如何查看堆栈跟踪?

  • 如何在帧之间移动?

0 投票
2 回答
1151 浏览

c++ - 函数的静态和动态父级

我正在阅读《C++ 中的思考》(第 2 卷):

每当调用函数时,有关该函数的信息都会被推送到激活记录实例 (ARI) 中的运行时堆栈,也称为堆栈帧。一个典型的堆栈帧包含 (1) 调用函数的地址(因此执行可以返回到它),(2) 指向函数静态父级的 ARI 的指针(词法上包含被调用函数的范围,因此全局变量该函数可以被访问),以及(3)一个指向调用它的函数的指针(它的动态父函数)。从逻辑上重复遵循动态父链接的路径是动态链或调用链

我无法理解作者作为函数的静态和动态父级的含义。也无法区分项目 1、2 或 3。它们似乎都是一样的。有人可以向我解释这段话吗?

0 投票
5 回答
52805 浏览

assembly - Gnu Assembler (GAS) 中的 CFI 指令有什么用途?

每行之后似乎都有一个 .CFI 指令,并且这些示例的种类繁多.cfi_startproc.cfi_endproc等等。 更多here

我没有明白这些的目的。

0 投票
4 回答
355 浏览

c++ - 提升单元测试内存重用导致测试无法通过

我们已经开始将 boost 单元测试库用于现有的大型代码库,我遇到了一些单元测试错误通过的问题,这似乎是由于堆栈上的内存重用。

这是我的情况:

第一个测试正确通过,初始化所有变量。
第二次单元测试中的构造函数没有正确设置EntityType或DataPosition,但是单元测试通过了。通过在第二次测试中将一些变量放在堆栈上,我能够让它失败,如下所示:

如果只有一个 int,则只有 EntityType CHECK_EQUAL 失败,但如果有两个,则 EntityType 和 DataPos 都失败,因此很明显这是在同一堆栈内存上创建的变量等问题。

是否有一种清除每个单元测试之间内存的好方法,或者我是否可能错误地使用了该库或编写了错误的测试?任何帮助,将不胜感激。

更新:
Select base 是一个简单的类,只有 bool、int 和 CString 成员变量。它是处理更复杂实现的状态的基类,因此它不访问任何全局变量或全局状态。

我需要一种在调用之间设置内存的方法,例如 0xdeadf00d,这样如果成员变量未初始化,单元测试就可以捕获它。否则只有第一个单元测试有任何好处。

我更新到 boost 1.41,但问题没有解决。它确实在某些测试用例中对问题产生了一定的影响,但并没有达到所有测试都会正确失败的程度。

0 投票
3 回答
13201 浏览

assembly - 为什么 pop 在汇编中需要一个参数?

似乎%ebp没有必要,因为pop堆栈的操作不需要参数。

为什么有意义?

0 投票
2 回答
2325 浏览

ruby - 如何返回调用方法的字符串名称?

现在我的代码是这样工作的:

我怎样才能打印调用方法的名称 - 'method_a',而不是 method_b 打印'method_b'?

0 投票
2 回答
1256 浏览

linux - 我们如何在 Linux 上从 Spack Pointer(reg/SP) 获取函数名称?

我正在使用 ptrace 获取与 Linux 上的 Callstack 相关的信息。我可以使用 ptarces 返回的寄存器检索指向我的堆栈的 Spack 指针。但是使用这个堆栈指针如何检索与当前调用堆栈的函数名称和签名相关的信息?

是否有任何 Linux API 可以遍历此调用堆栈?

请帮助..我正在寻找它从过去几天...

提前感谢桑迪普

0 投票
3 回答
5508 浏览

assembly - 汇编中的堆栈/基指针

我知道这个话题已经在这里和互联网上的其他地方被报道过令人作呕- 但希望这个问题是一个简单的问题,因为我试图让我的头脑围绕组装......

因此,如果我理解正确,ebp(基本指针)将指向堆栈的顶部,而 esp(堆栈指针)将指向底部——因为堆栈向下增长。esp 因此指向“当前位置”。因此,在函数调用中,一旦您将 ebp 保存在堆栈上,您就会插入一个新的堆栈帧 - 用于该函数。因此,在下图中,如果您从 N-3 开始,您将通过函数调用转到 N-2。但是当你在 N-2 时 - 你的 ebp == 25 和 esp == 24 (至少在最初,在任何数据放入堆栈之前)?

这是正确的还是我在这里切线?

谢谢!

http://upload.wikimedia.org/wikipedia/en/a/a7/ProgramCallStack2.png
(来源:wikimedia.org