静态函数通常在库中使用,因此库内部使用的名称不会与用户可能使用的名称发生冲突。 库被剥离后,静态函数的名称将从符号表中删除。在这种情况下,性能分析器会为包含剥离静态函数的库中的每个文本区域生成人工名称。该名称的格式为 <static>@0x12345,其中 @ 符号后的字符串是库中文本区域的偏离量。性能分析器无法区分连续的剥离静态函数和单个这样的函数,因此可能出现两个或多个这样的函数,且其度量合并在一起。以下示例显示 jsynprog 样例演示的函数列表中的静态函数。
0. 0. <static>@0x18780 0. 0. <static>@0x20cc 0. 0. <static>@0xc9f0 0. 0. <static>@0xd1d8 0. 0. <static>@0xe204
在 "PCs" (PC) 视图中,这些函数使用如下所示的偏移量表示:
0. 0. <static>@0x18780 + 0x00000818 0. 0. <static>@0x20cc + 0x0000032C 0. 0. <static>@0xc9f0 + 0x00000060 0. 0. <static>@0xd1d8 + 0x00000040 0. 0. <static>@0xe204 + 0x00000170
在 "PCs" (PC) 视图中,在被剥离的库内调用的函数的替代表示方法为:
<library.so> -- no functions found + 0x0000F870