【发布时间】:2016-09-29 08:13:31
【问题描述】:
我正在尝试解析由我制作的脚本生成的输出文件,该脚本用于strace。
下面是一个解析日志的例子:
17:21:07 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ffb000 <0.000326>
17:21:07 mmap2(NULL, 8859, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ff8000 <0.000337>
17:21:07 mmap2(NULL, 430216, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f6c000 <0.000479>
17:21:07 mmap2(0xb6fd4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x68000) = 0xb6fd4000 <0.000571>
17:21:07 mmap2(NULL, 1258856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e38000 <0.000517>
17:21:07 mmap2(0xb6f66000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x126000) = 0xb6f66000 <0.001654>
17:21:07 mmap2(0xb6f69000, 9576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f69000 <0.002229>
17:21:07 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff7000 <0.000071>
17:21:07 munmap(0xb6ff8000, 8859) = 0 <0.000568>
17:21:07 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ffa000 <0.000082>
这是我用来解析的那一行:
cat ${traced}_brut.txt | grep "map" > ${traced}_parced.txt
现在,我要做的是删除具有相同十六进制值的行,以便更好地发现内存泄漏。
例如在这种情况下,波纹管应该从最终的日志文件中消失,因为它们共享相同的十六进制值:
17:21:07 mmap2(NULL, 8859, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ff8000 <0.000337>
17:21:07 munmap(0xb6ff8000, 8859)
【问题讨论】:
标签: strace shell parsing logging strace