问题标签 [stack-unwinding]

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 投票
1 回答
312 浏览

r - R中的异常处理和堆栈展开

为了为我的同事和我的 R 脚本设置一个连贯的异常处理接口,我想采用以下 tryCatch 结构。

  1. 外部 tryCatch 包裹在给定的 R 脚本周围。它用于捕获和处理需要脚本中止的致命错误。
  2. 用户脚本中特定于用户的 tryCatch 命令。这些应该捕获并可能处理
    • 2a。非致命错误,不需要脚本中止
    • 2b。需要脚本中止的致命错误。错误由外部 tryCatch 处理 [参见 1.]
    • 2c。带有附加错误信息的致命错误。外部 tryCatch 处理的错误。

以下代码是我将如何实现这些功能。但是,由于我不是 R 方面的专家,我想问一下这是否是一个好方法。具体来说:

Q1。是否可以不在内部 tryCatch 中指定错误处理程序并等待外部 tryCatch 处理该错误(参见上面的 2b. 和下面的代码)?

Q2。在处理程序中重新抛出相同的错误(参见上面/下面的 2c)是否正确/被认为是良好的编码风格?

谢谢!

0 投票
2 回答
1765 浏览

java - JVM 如何知道在运行时在哪里捕获异常?

据我了解,throw是一个原始的 jvm 命令。当它被调用时,JVM“检查当前调用堆栈是否可以捕获它”。如果不能,那么 java 几乎就像调用 return 一样简单地弹出调用堆栈。然后jvm“检查当前调用堆栈是否可以捕获它”等等递归。

我的问题:JVM 如何在算法上知道调用堆栈中的哪个位置可以捕获给定的异常?每个调用堆栈条目映射异常到代码块中是否存储元数据?堆中是否有一个静态数据结构以某种方式跟踪这一点?因为某处必须有数据来跟踪它。

0 投票
2 回答
726 浏览

c++ - 为什么 malloc/new 捕获调用堆栈?

我有一个在 Server 2003 下作为服务运行的 64 位应用程序。

当我附加 VS Profiler 或 windbg 时,我看到很多调用堆栈,如下所示。我知道在调试器(或分析器)中生成的进程使用调试堆等......但情况并非如此,因为该服务是由操作系统启动的,我只是附加到它。

我不明白为什么它正在展开堆栈。分析器显示,在这方面花费了可衡量的时间。更多信息:

• 这些是使用 vc9 构建的版本位,在 Server 2003 上运行。

• 系统环境变量_NO_DEBUG_HEAP 设置为1。

• 我正在使用 Microsoft 符号服务器。

为什么要捕获堆栈跟踪?似乎它正在记录它..但我找不到在哪里。

我的目标是验证应用程序是否真的在展开堆栈,如果这是真的,尽量避免它。

有任何想法吗?


调用栈

0 投票
2 回答
305 浏览

c++ - 是否有任何技巧可以检测在执行另一个析构函数期间是否创建了对象?

这是对为什么 Alexandrescu 不能使用 std::uncaught_exception() 在 ScopeGuard11 中实现 SCOPE_FAIL 的一种跟进?

我想检测是否有人MyClass在另一个类的析构函数中创建(或在调用堆栈中的某处使用活动的析构函数)。

一种尝试可能是:

但这仅在由于异常而调用析构函数时才有效,而不是因为对象超出范围而被调用时才有效。

0 投票
2 回答
247 浏览

c++ - 在堆栈展开时抛出/捕捉是否安全?

问:在堆栈展开时抛出并捕获异常是否安全,或者应用程序terminate是否在第二次抛出时调用?

最小的例子:

读完这个问题后我很好奇。

注意:我知道你可以/应该在析构函数中,但是在一个块catch(...)中通常有 a 是否有意义- 也许在某个调用异常的函数中(在我的示例中)?try/catchcatchre

0 投票
1 回答
542 浏览

mips - 为 mips 目标配置和构建 libunwind

有谁知道如何为 mips 目标(不是正在构建库的主机)配置和构建 libunwind?

0 投票
1 回答
148 浏览

storyboard - 如何从随机初始控制器展开序列

我在情节提要中有一个托管容器视图。我有四个视图,用户可以左右滑动。

如果用户双击,双击,我将它们发送到新控制器。问题是,我如何把它们带回来?我想要双击双击将它们发送回它们的来源。

我不能使用转场,因为我不知道在情节提要级别链接回什么。如何更改 segue 的目的地以返回我们来自的地方?

0 投票
1 回答
676 浏览

c++ - x64 堆栈展开并检查 RIP 是否在 Epilog 中

我想展开 x64 调用堆栈,所以我试图遵循我在这里找到的“UNWIND 过程”:http:
//msdn.microsoft.com/en-us/library/8ydc79k6.aspx

我知道如果 RIP 在结语中,我们需要计算 RSP 的偏移量,考虑到仍然需要完成的操作,但我不清楚如何确定 RIP 是否在结语中(在第3.a)?
有人可以向我解释一下吗?(链接或代码示例也将不胜感激)

0 投票
1 回答
282 浏览

c++ - 在 x64 堆栈中查找 RUNTIME_FUNCTION 的算法

我正在尝试展开 x64 堆栈。
为此,我需要遵循此处指定的算法:http:
//msdn.microsoft.com/en-us/library/8ydc79k6.aspx

但是为了遵循它,我需要知道如何找到正确的RUNTIME_FUNCTION,但我找不到完整的算法......

有人知道怎么做吗?(链接或示例也将不胜感激)

0 投票
2 回答
4415 浏览

c++ - 结构 RUNTIME_FUNCTION

我在 IDA 的 RUNTIME_FUNCTION 结构的 .pdata 段中发现了一个大数组。所以,我可以在哪里找到信息:从它的编译内容,我如何创建它以及如何在 C++ 中使用它。请给我书籍,或带有良好描述和教程的链接,用于异常处理和展开这种结构。