3

我有一个进程在从 IIS 进程中运行时溢出堆栈,但在单独运行时工作正常。我怀疑它本身会获得默认的 1MB 堆栈,但在 IIS 中会少一些。

为了避免弄乱 IIS 工作进程,我在 IIS 进程中使用子线程来分配更大的堆栈,但我怀疑根据文档(http://msdn.microsoft ),线程创建的堆栈大小参数被忽略了.com/en-us/library/ms149581.aspx

当堆栈溢出时,我可以在调试器中查看暂停的进程,但我如何找出实际分配的堆栈有多大?

4

1 回答 1

2

答案如下。

在调试器中,在伪寄存器 TIB 上添加一个监视 ( http://msdn.microsoft.com/en-us/library/aa232399(v=vs.60).aspx )

现在取这个值并在内存窗口中显示那个地址。从第二个 4 字节字中减去第三个 4 字节字,记住使用小端字节序。 http://en.wikipedia.org/wiki/Win32_Thread_Information_Block

于 2013-02-21T15:32:01.300 回答