Есть ли готовые решения для построения дерева зависимостей между файлами?
> Xdebug был бы замечательным вариантом, но ни одна утилита, работающая с его выходным файлом не содержит функционала слежки за инклудами
Так я и предлагаю реализовать это самому, тем более формат очень простой и похоже вся логика сведется к отслеживанию «fn=require_once::...» (cfn)

Пример:
fl=ips_kernel/classDbMysql.php
fn=require_once::ips_kernel/classDbMysql.php
1 91512
cfn=php::define
calls=1 0 0
25 4
cfn=php::class_exists
calls=1 0 0
30 5
cfn=php::dirname
calls=1 0 0
32 1
cfn=require_once::ips_kernel/classDb.php
calls=1 0 0
32 36
cfn=php::extension_loaded
calls=1 0 0
1066 1
cfn=php::defined
calls=1 0 0
1066 5
cfn=php::dirname
calls=1 0 0
1068 1
cfn=require::ips_kernel/classDbMysqliClient.php
calls=1 0 0
1068 79


Подключение:
ips_kernel/classDbMysql.php
    -> ips_kernel/classDb.php
    -> ips_kernel/classDbMysqliClient.php


НО, дерево будет справедливо только для текущего скрипта (т.е. может зависеть от вх. параметров), это можно решить скриптом, которому будет скармливаться xdebug-файл, а на выходе будет дерево для него.
А подсмотреть в коде интерпретатора, что делает include, нет возможности? Возможно там уже решение описано