主要内容

Polyspace 桌面端用户界面中的调用层次结构

本主题侧重于 Polyspace® 桌面端用户界面。若要了解 Polyspace Access™ Web 界面中的等效窗格,请参阅 Polyspace Access Web 界面中的调用层次结构 (Polyspace Access)

调用层次结构窗格显示源代码中函数的调用树。

对于每个函数 foo调用层次结构窗格会列出调用 foo 的函数和任务(调用方)以及被 foo 调用的函数和任务(被调用方)。调用方以 (函数)或 (任务)表示。被调用方以 (函数)或 (任务)表示。调用层次结构窗格会列出直接函数调用和通过函数指针进行的间接调用。间接调用以 图标显示。

您可以使用结果详细信息中的 图标打开调用层次结构窗格。要更新此窗格:

  • 您可以在结果列表窗格中点击某个缺陷。您可以看到包含该缺陷的函数及其调用方和被调用方。

  • 您可以右键点击某个函数的名称并选择转至定义。您会看到该函数的调用方和被调用方。

在此示例中,调用层次结构窗格显示函数 generic_validation 及其调用方和被调用方。

调用层次结构窗格中的行号是指源代码中的不同行:

  • 对于函数名称,行号指向函数定义的开头。generic_validation 的定义从第 69 行开始。

  • 对于被调用方名称,行号指向该被调用方被调用时所在的行。被调用方 functional_rangesgeneric_validation 在第 86 行调用。

  • 对于调用方名称,行号指向该调用方调用函数所在的行。调用方 main 在第 50 行调用 generic_validation

提示

要导航到源代码中的调用位置,请选择调用方或被调用方名称

“调用层次结构”窗格中支持的操作

调用层次结构窗格中,您可以执行以下操作。

显示或隐藏调用方和被调用方

自定义视图以仅显示调用方或仅显示被调用方。点击以下按钮来显示或隐藏调用方和被调用方

导航调用层次结构

您可以在源代码中导航调用层次结构。对于函数,双击调用方或被调用方名称可导航到源代码中该调用方或被调用方的定义。

确定函数是否已插桩

已插桩列中,您可以确定函数是否已插桩。该列中的条目显示函数插桩的原因。

  • 自动:Polyspace 找不到函数定义。例如,您没有提供包含函数定义的文件。

  • 标准库:该函数是标准库函数。您没有在 Polyspace 工程中明确提供函数定义。

  • 映射到标准库:您使用了 -code-behavior-specifications 选项将函数映射到标准库函数。

Bug Finder 中“调用层次结构”的显示限制

Polyspace Bug Finder™ 中,您可能看不到某个函数的所有调用方或被调用方,尤其是通过函数指针和死代码进行的调用。

例如,调用层次结构窗格:

  • 不显示使用 at_exit()at_quick_exit() 注册并分别由 exit()quick_exit() 调用的函数。

  • 可能不会显示通过大型函数指针数组进行的所有函数调用。

  • 可能不会显示所有对 C++ virtual 函数的调用。