JSFiddle - React, Tailwind, and code Playground

by angry_bender

JavaScript

Простейший пример, после осознани которого, я, лично, перестал считать трассировщик xdebug-а корректно работающим.
Допустим, у нас есть 2 файла: file_1.php и file_2.php. Они содержат (повторяю, пример совершенно примитивный, но показательный) одну функцию, пусть она называется fn() и ничего не принимает. Ну тогда наши файлы имеют примерно такой код

function fn()
{

}

Полный дзен, да.

Пусть так же у нас есть еще один файл, ну назовем его main_controller.php
Пусть в нем будет функция, которая инклудит один из файлов file_1.php или file_2.php в зависимости от переданного параметра. Функция у нас будет такая:

function a($file)
{
	if ($file == 1) {
		include __DIR__ . '/file_1.php';
	}
	else {
		include __DIR__ . '/file_2.php';
	}
}

А сам код main_controller.php таков:

a(1);
fn();

Суть проблемы: одна и та же функция (класс) может встречаться в нескольких местах - и порою важно КУДА ИМЕННО происходит переход в процессе работы программы, а НЕ ОТКУДА произошел очередной вызов функции/метода.
Если мы врубим стректрейс ПОСЛЕ вызова a(1) - мы увидим такой информативный лог:

TRACE START [2015-01-19 05:26:47]
    0.0005     643696     -> fn() /home/kirill/trace/test_2.php:25
    0.0006     643744     -> xdebug_stop_trace() /home/kirill/trace/test_2.php:28
    0.0006     643784
TRACE END   [2015-01-19 05:26:47]

Мы не знаем, где эта функция fn().
Конечно, можно включить трассировку по-раньше и захватить вызов a(1), тогда лог станет уже понятным:

0.0004     642768     -> a() /home/kirill/trace/test_2.php:23
0.0005     644496       -> include(/home/kirill/trace/file_1.php) /home/kirill/trace/test_2.php:14
0.0005     643696     -> fn() /home/kirill/trace/test_2.php:26

Для анализа видимо предлагается парсить строку и тд (есть машиночитаемый формат, да я знаю).

Лично мне принцип логирования в xdebug-е не нравится, поэтому я перевернул его с ног на голову: в моем логгере сохраняется КУДА происходит переход, а не ОТКУДА. 
Зачем это надо? Допустим, в некой системе есть...