如何找到最大堆栈大小?

问题描述:

我正在使用Ubuntu 11.04。如何找出进程的最大调用堆栈大小以及堆栈的每个帧的大小?如何找到最大堆栈大小?

您可以使用getrlimit查询最大进程和堆栈大小。堆栈帧没有固定的大小;它取决于每个帧需要多少局部数据(即局部变量)。

要在命令行上执行此操作,可以使用ulimit。

如果你想为正在运行的进程读取这些值,我不知道这是否任何工具,但它很容易查询/ proc文件系统:

cat /proc/<pid>/limits 
+0

我收到未找到错误的命令。我需要为这个命令安装什么软件包? – Bruce

+0

这是一个C API调用,而不是命令行工具。 –

+0

他们需要拥有一些适合的起始尺寸?编译器是否事先计算堆栈帧的大小(考虑到所有局部变量),然后分配帧? – Bruce

您可以使用getrlimit查看堆栈大小和setrlimit来更改它。

Increase stack size in Linux with setrlimit有一个例子。

+2

在Ubuntu下不是一个像getrlimit的命令 – HMS

快速谷歌搜索应该显示some information on this subject。以KB为单位

> ulimit -a   # shows the current stack size 
+1

当然,快速的谷歌搜索现在提供了这个页面。 – gerardw

最大堆栈大小:

ulimit -s