【问题标题】:How to look up a .NET thread's stack size in using a tool?如何在使用工具时查找 .NET 线程的堆栈大小?
【发布时间】:2014-01-20 15:29:34
【问题描述】:

我对 .NET 比较陌生,但我知道如果在 Win32 线程中发生无限递归,线程堆栈最终会耗尽空间并发生堆栈溢出。

现在我在这里有一个 .NET 应用程序,它可能在某个场景中进行无限递归。

我想知道是否有办法使用诸如 Process Explorer 之类的工具来查找托管线程堆栈的当前消耗,以便我可以查看详细信息?

【问题讨论】:

  • 如果你用尽了堆栈,你会得到一个 StackOverflowException 并且堆栈会告诉你为什么会发生这种情况。您到底在寻找什么?
  • 如果是无限递归,在你有时间做任何事情之前它就会崩溃(毕竟不是那么无限!)。
  • 您的代码中有错误。一个非常讨厌的错误,SOE 是最糟糕的例外之一。您使用调试器诊断错误。调用堆栈窗口显示递归。修复错误需要您耳边的工具,没有替代工具。当然你已经知道了这一切,也许只需要朝着正确的方向努力。
  • 比这复杂一点,软件功能要求在再次调用该函数之前应该有一个延迟。这实质上意味着我将不得不等待很长时间才能发生堆栈溢出。我知道如果我连接 Visual Studio,我可以看到调用堆栈,但我很想知道在特定时刻线程堆栈上使用的空间量。 .我该怎么做?

标签: .net recursion stack-overflow callstack process-explorer


【解决方案1】:

我想你使用 Visual Studio IDE。您可以使用call stack window。在this tutorial 你可以看到很多提供的功能。

希望我能帮上忙!

【讨论】:

  • 谢谢。这会让我看到特定线程在给定时刻消耗的堆栈数量吗?
猜你喜欢
  • 2011-07-27
  • 2012-02-20
  • 2010-10-30
  • 2014-02-25
  • 2013-02-07
  • 2011-02-03
  • 2020-10-17
  • 1970-01-01
  • 2014-09-21
相关资源
最近更新 更多