在某些情况下,PC 不会映射到已知函数。 在这样的情况下,PC 会映射到名为 <Unknown> 的特殊函数。
以下是 PC 映射到 <Unknown> 的情形:
动态生成用 C 或 C++ 编写的函数,且未使用收集器 API 函数为收集器提供有关函数的信息时。有关收集器 API 函数的更多信息,请参见动态函数和模块。
动态编译 Java 方法但禁用 Java 程序分析时。
PC 对应于可执行文件或共享对象的数据段中的地址时。一种情况是 libc.so 的 SPARC V7 版本,在其数据段中有多个函数(例如,.mul 和 .div)。代码位于数据段中,以便库检测到该代码正在 SPARC V8 或 SPARC V9 平台上执行时可以动态重新编写该代码以使用计算机指令。
PC 对应于在实验中未记录的可执行文件的地址空间中的共享对象时。
PC 不在任何已知的装入对象中时。最有可能的原因是展开失败,其中记录为 PC 的值根本不是 PC,而是某个其他字。如果 PC 是返回寄存器,并且看上去不在任何已知的装入对象中,则该 PC 会被忽略,而不是归属到 <Unknown>> 函数。
PC 映射到收集器没有其符号信息的 JVM 软件的内部部分时。