1 уровень новичек:
вставляете в самое начало файла
<?php var_dump(123);die();?>
запускаете, если не видите 123 значит не работает потому-что что-то не то запускаете, или как-то не так.
если работает, перемещаете эти команды ниже на несколько строчек, запускаете. Если работает, проблема между строкой в которой команды были в прошлый раз и строкой в которой команды сейчас. Если не работает, перемещаем еще ниже, до тех пор пока не заработало. При необходимости заходим внутрь вызываемых функций и творим этот ужас там. Если дошли до конца, и 123 всегда видно, значит ошибка логическая и нужно приступать к самому сложному, последнему уровню.
1.5 уровень, хитрый новичек: переложить происк проблемы на кого-то другого (более опытного программиста).
2 уровень, продвинутый.
xdebug, похоже с предыдущим вариантом, только вместо комманд прерывания исполнения кода используем прерывания отладчика, из дополнительных плюшек: можно после прерывания исполнять код построчно и смотреть значение переменных (быстрее чем var_dump и повторный запуск, но умений должно хватать на настройку xdebug и IDE), плюс есть возможность посмотреть весь стэк, и значения переменных в нем.
3 уровень, почитать код.