1

所以我需要打印出单个 iphone 应用程序的内存使用情况以进行浸泡测试。如果有一个存储的日志监控使用时间(在自动化测试中定期运行),这将有很大帮助。

为此,我已经越狱了 iPhone 并安装了移动终端。我的计划是用来top -p过滤掉其余的进程,然后将输出输出到日志文件。然后可以在以后回收数据并进行分析。

不幸的是,当我运行 PID 616 时:

top -p 616

那么我得到的只是616多次打印出来:

Processes:  77 total, 1 running, 5 stuck, 71 sleeping... 335 threads                                                                                                                                     02:38:09
Load Avg:  1.23,  0.93,  0.90    CPU usage:  3.33% user,  0.00% sys, 96.67% idle
SharedLibs: num =    0, resident =     0 code,     0 data,     0 linkedit.
MemRegions: num =     0, resident =     0 +     0 private,     0 shared.
PhysMem:  108M wired,  152M active,   39M inactive,  497M used,  519M free.
VM: 28G + 0   904390(0) pageins, 32065(0) pageouts

  PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS  RPRVT  RSHRD  RSIZE  VSIZE
616
616
616
616
616
616
616
616
616
616
616
616
616
616
616
616
616
616

我环顾四周,似乎 iphone 顶部的标志略有不同,但我找不到具体的描述。谁能告诉我如何为一个进程打印数据?

谢谢。

4

1 回答 1

0

如果您想找出正确的命令行开关top,或其他任何东西,请尝试以下操作:

>> top --help

但是,您会看到越狱 iOS 版本不支持 PID (-p) 开关。

但是,如果你使用这个:

>> top -l 2 | grep 616

它应该给你你需要的东西(在输出的第二行)。-l开关为您提供 N 个样本。您至少需要 2 个,因为 top 将 CPU% 计算为样本之间的增量,因此只有 1 个样本,它将始终为 0%。但是,如果您只需要使用内存,您可能可以使用:

>> top -l 1 | grep 616

使用只是top | grep 616不起作用,因为它连续运行。您可能只需要一个值,然后应该top退出。

注意:您可能还需要grep从 Cydia 安装。只需搜索grep. 这是 Saurik 发布的一个包。

警告:因为您grep用于搜索正确的 PID,您可能需要让解析日志文件的代码验证其日志输入。正确的输出将在文件中,但如果数字 PID 与任何其他行匹配,您还将获得额外的数据。例如,如果您搜索的 PID 也恰好是另一个进程使用的内存 MB 数,您将获得额外的输出行。但是,文件中的第一列将始终是 PID。

于 2014-07-21T09:33:32.417 回答