Найти разность двух трасс стека / «относительная трасса стека» в PHP?

В PHP вы можете получить массив трассировки стека из \Exception::getTrace() или из debug_backtrace(),

Две трассировки стека в одном и том же процессе / запросе обычно имеют несколько общих вызовов, а затем несколько отдельных вызовов. Или иногда одна трассировка стека может полностью содержаться в другой, более глубокой трассировке стека.

Например. если вы ловите исключение, а затем в блоке catch вы вызываете debug_backtrace()тогда это, как правило, будет суб-следом следа исключения.

В целях отладки может быть интересно взглянуть только на ту часть трассировки, которая относится к функции, содержащей try / catch.

Каким будет элегантный способ получить этот частичный или относительный след стека?

У меня есть некоторая идея, как бы я сделал это сам, и мог бы опубликовать это как ответ. Но мне любопытно, есть ли лучший способ.

Я ожидаю одну особую трудность: два элемента на каждой трассе могут выглядеть одинаково, даже если они на самом деле разные. Я предполагаю, что два вызова из одного и того же цикла неразличимы. Интересно, есть ли какой-нибудь трюк, который сделает их различимыми?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …