1

我有一个命令行应用程序,它在 shell 上执行将列出从数据库读取的输出。它以块的形式获取这些信息,并为其完成内存分配和释放。当我执行命令(其输出将跨越大约 6000 页)时,它正确列出了数据。但是(仅在 AIX 中)当我发出 'command | more' 在显示随机页数后,应用程序中以块的形式获取数据的内存分配失败。(对于相同的数据,相同的命令实现在 linux 中运行良好)。知道为什么在 AIX 中它失败了吗?有人知道 AIX 中的内存分配标准吗?为什么将输出传递给更多命令会导致应用程序中的内存分配失败?

4

1 回答 1

0

目前尚不清楚故障到底是什么。您是遇到段错误还是调用 malloc 返回 0 表示您的内存不足?

错误可能出在 AIX 库中,但也很容易出现在您的应用程序中。

转到此处: http: //pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp(或适合您级别的页面)

搜索“malloc 调试”。这些设施不是最先进的,但它们相当好和完整。通过一些时间和注意,您可以跟踪内存泄漏并在内存被释放后使用它(这听起来像这里的情况)。

查看您的级别的可用 APAR 以寻找听起来相似的匹配项也很好。

还有 3rd 方工具,如零故障http://www.zerofault.com/index.html和 Purify(看起来像 IBM 购买的)http://www-01.ibm.com/software/awdtools/purify/unix /sysreq/来帮忙。

祝你好运

于 2012-09-15T13:11:19.143 回答