It is hard to do a purely static analysis of a perl program to determine the functions and call trees. eval can dynamically create functions, there is polymorphism, and what about closures?

Intuitively, that sort of static analysis seems to me to be equivalent to the halting problem in the general case -- you'd have to determine the depth of recursive call chains, handle mutually recursive functions, and so on. Not that a general solution is necessarily required... but don't spend months on a problem that's known to be impossible to solve. :-)

As for capturing the call stack at runtime, that's probably next to impossible to do completely as well -- you'd have to test every configuration of the program -- but again, it's something for which a partial solution would be great. To ensure that you're not leaving anything out, you might want to mess around with Devel::Cover or something of the sort.

Be sure to post what you end up with! If nothing else, it sounds like a good debugging tool.

--
F o x t r o t U n i f o r m
Found a typo in this node? /msg me
% man 3 strfry


In reply to Re^2: Auto-generating annoted call trees by FoxtrotUniform
in thread Auto-generating annoted call trees by Ytrew

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.