问题标签 [stack-frame]

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 投票
2 回答
284 浏览

perl - 列出当前和更高帧中的变量

我正在尝试使用perl -d .... 在我想要的地方休息后,我想打印出当前环境和更高帧的环境。

我通过T. 现在,如果我尝试V,我会得到一个所有内容的列表,这几乎是无用的,因为它包含SO_BROADCAST常量等内容。我怎样才能过滤掉这些内容并只获取本地内容?

我如何为更高的帧做同样的事情?

另外,如何在更高堆栈帧的行周围打印代码?v/l只做当前的一个。

0 投票
1 回答
1118 浏览

powershell - Powershell 的堆栈跟踪是否损坏?

我正在PowerShell中编写一个简单的单元测试工具

我设计了该工具,使其断言函数将脚本块作为参数,以允许工具从断言函数中运行代码并将任何异常视为测试失败。

如果测试失败,我想在单元测试中返回测试失败的行。我的计划是通过在每个断言方法的开头获取堆栈跟踪(Get-PSCallStack)并使用第二个堆栈帧的信息来做到这一点,我假设它应该对应于调用断言函数的行。

在实践中,我发现powershell返回的信息似乎是错误的。第二个堆栈帧按预期引用正确的文件,但始终给出我在 assert 方法中调用 Get-PSCallStack 的行号。有时,这个数字甚至可能高于给定文件中的行数(即,位置给出为“ScriptFile.ps1 第 88 行”,但文件只有 20 行)。

powershell 中的堆栈跟踪是否有问题,或者我在这里不理解什么?

编辑

根据要求,我发布了一个应该产生相同结果的示例

测试者.ps1

测试用例.ps1

在 TestCase.ps1 的第 7 行调用断言,并在 Tester.ps1 的第 9 行捕获调用堆栈

这打印

命令正确但文件和行都错误

堆栈跟踪的下一帧正确描述了调用 TestFailure() 的位置,其位置为“TestCase.ps1:第 11 行”

0 投票
2 回答
80353 浏览

assembly - 关于汇编中push ebp和pop ebp指令的解释

我在汇编中使用了堆栈,但我不知道 push ebp 和 pop ebp。

0 投票
1 回答
554 浏览

debugging - 可以用框图可视化堆栈的调试器

我真的很想要一个能够将当前堆栈帧(RSP 和 RBP 之间的字节)可视化为框图的调试工具。

像这样的东西,但在单元格中有真正的执行值:http: //abrickshort.files.wordpress.com/2006/11/stackframe.jpg

有这样的软件吗?我使用的是 UNIX 系统。

PS。

了解 gdb 的“检查字节”功能。这就是我现在使用的,但我想要漂亮的图表向我的主管展示。

干杯

0 投票
4 回答
23213 浏览

c# - 用于 Web 应用程序的 GetEntryAssembly

Assembly.GetEntryAssembly()不适用于 Web 应用程序。

但是……我真的需要这样的东西。我使用一些在 Web 和非 Web 应用程序中使用的深度嵌套代码。

我目前的解决方案是浏览 StackTrace 以找到第一个调用的程序集。

为了确保组装是我们想要的,我们有 3 个条件:

  • 程序集不在 GAC 中
  • 大会不是动态的
  • 不生成程序集(以避免临时 asp.net 文件

我遇到的最后一个问题是基页是在单独的程序集中定义的。(我使用 ASP.Net MVC,但它与 ASP.Net 相同)。在这种特殊情况下,返回的是单独的程序集,而不是包含页面的程序集。

我现在正在寻找的是:

1)我的装配验证条件是否足够?(我可能忘记了案例)

2) 有没有办法从 ASP.Net 临时文件夹中的给定代码生成程序集获取有关包含该页面/视图的项目的信息?(我认为不是,但谁知道......)

0 投票
1 回答
75 浏览

c# - 检索 FormatException 参数

我正在使用这样的闭源第三方库:

现在,在更远的地方,第三方库尝试解析具有意外格式的 DateTime 值并引发 FormatException。

在这种情况下,我想检索它没有成功解析的字符串并尝试自己解析它。像这样的东西:

是的,简单地附加年份是毫无意义的,但你明白了。第三方库不支持我需要的所有格式,但我也不能轻易从“someObject”中获取数据。(是的,我可以尝试使用 Reflector 复制库所做的事情,但我想避免这种情况。)

有没有办法做到这一点?谢谢。

0 投票
3 回答
1008 浏览

c - -fomit-frame-pointer *always* 是否忽略 fp?

-fomit-frame-pointer 是否总是省略帧指针?是否存在需要同时设置 pc 和 fp 的情况?动态堆栈增长是否会强制设置 fp?专门询问 MIPS32。谢谢!

0 投票
1 回答
209 浏览

python - repr 调用导致堆栈帧?

是否有标准repr的调用方法导致 Python 中的给定堆栈帧?如果做不到这一点,有没有一种手动的好方法?

举个例子:

我正在尝试记录某些调用,并且正在编写一个装饰器来记录对包装函数的调用以及完整的详细信息。我要解决这个问题了吗?

0 投票
2 回答
2627 浏览

optimization - gcc 疯狂的优化级别 (-O3) 还不够疯狂吗?

作为回答另一个问题的一部分,我想表明gcc( -O3) 的疯狂优化水平基本上会去除 main 中未使用的任何变量。代码是:

gcc -O3输出是:

现在我可以看到它已经删除了局部变量,但那里仍然有相当多的浪费。在我看来,整个:

部分可以替换为更简单的:

有谁知道为什么gcc不执行此优化?我知道这会为自己节省很少的main钱,但是,如果这也使用普通函数完成,那么在大规模循环中不必要地调整堆栈指针的效果将是相当可观的。

用于生成程序集的命令是:

0 投票
1 回答
357 浏览

.net - StackFrame.GetFileLineNumber() 行为因程序集平台和优化标志而异

我试图理解一个问题,虽然我读了很多书,但我似乎找不到任何资源来解释这种奇怪的组合。

经过一些实验,我发现设置编译器优化开/关和为 AnyCPU/x86 平台构建的组合改变了 StackFrame.GetFileLineNumber() 的行为

我不明白为什么我得到以下结果(在我的 x64 系统上)

下面的代码重现了该问题。

如果您将上述代码保存为code.cs使用以下脚本创建批处理文件,它将编译程序集以轻松解决问题: