gpt4 book ai didi

perl - 报告在 Perl 中调用给定函数的所有函数层次结构

转载 作者:行者123 更新时间:2023-12-01 11:48:16 25 4
gpt4 key购买 nike

给定一个函数名称,我想“一直到顶部”报告调用层次结构。

例如,

# ./find.pl functionName
functionName
caller
caller2
...
callerN

在上面的输出中,我了解到 callerN 是最终调用“最低级别”functionName 函数的“顶级”函数。

我一直在努力实现这一点,但实现总是有缺陷。它不够可靠,我对它没有信心。

有没有什么东西可以做到这一点?

谢谢

最佳答案

NYTProf是一个调试包,允许对函数调用进行非常细粒度的检查。它可以输出为 HTML 以查看详细的(运行时)配置文件。根据您的要求,查看它也可以输出的调用图可能会有所帮助。

示例代码:

#!/usr/bin/perl
use strict;
use warnings;

&say_hi;

sub say_hi {
print &hello;
}
sub hello {
return "Hello world!\n";
}

调用方式:

$ perl -d:NYTProf hello.pl

在当前目录中生成一个名为 nytprof.out 的文件,nytprof 可以解析该文件:

$ nytprof nytprof.out --open

这将创建一个名为 nytprof 的目录,并自动在分析结果页面上为您打开浏览器。有趣的部分可能是您可以下载的图表(但它们也位于 nytprof 目录中)。这些调用图按级别组织,可以让您深入了解程序的哪些部分调用了哪些函数。这个简单程序的调用图如下所示:

Call graph for simple hello world program

PS:图表以点文件的形式提供。要从 graph.dot 创建 SVG,请说

$ dot -Tsvg -o graph.svg graph.dot

dot 手册中有更多内容。

关于perl - 报告在 Perl 中调用给定函数的所有函数层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13925113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com