У меня была похожая проблема с phpstorm 4.x / xdebug 2.2.3 / php 5.4.3
Я мог бы установить точку останова высоко в коде, и это сработало бы, но, шагая по строкам, я увидел, что отладчик не синхронизирован с реальным кодом. Это означало, что некоторые точки останова были пропущены.
После долгих экспериментов я наконец понял, что проблема была в том, что у меня были разрывы строк в моих переменных.
Например:
$q = "SELECT *
FROM table
WHERE
product_id = 'whatever'
AND product_status != 'inactive'";
выкинул бы отладчик на 4 - 5 строк, когда он добрался до этого оператора.
Изменение этого на:
$q = "SELECT * FROM table WHERE product_id = 'whatever' AND product_status != 'inactive'";
исправил проблему!
Очевидно, что это повлияет на любое объявление var с переносами строк, а не только на те, которые предназначены для запросов SQL. Немного боли, потому что я делаю это для удобства чтения, но я надеюсь, что это сэкономит время для кого-то с такой же проблемой.