🐞 Немного об отладке через var_dump

Отладка на vk (144.06КиБ)
Кто-то из разработчиков отлаживает «Вконтакт» через var_dump прямо на «бою»

Недавно поймал, посещая «Вконтакт», такую ситуацию. Владельцы её заметили нескоро — висело ещё минимум час.

«Вконтакте» написан на диалекте ПХП и для тех не знаком с этим языком поясню — это какой-то смелый программист, отлаживая что-то прямо на промышленной среде, вывел какой-то ассоциативный массив прямо в код страницы встроенной в язык функцией var_dump. Кстати, довольно распространённый способ в рядах «старой школы».

Комментарии 23

fluder.co № 4
В продаешн xdebug не все тянут, видимо разработчик пытался исправить баг, который на дев машине не возпроизводился.
Евгений Степанищев (bolknote.ru) автор № 6
В продаешн xdebug не все тянут, видимо разработчик пытался исправить баг, который на дев машине не воспроизводился.

Мы обычно это делаем так: деплой идёт ещё на одну машину, помимо «боевых», ровно такую же, как и все остальные, она подключена к базе, кеши и всему остальному, но пользователи туда не ходят, там и отлаживаем.

Svan № 5
видимо разработчик пытался исправить баг, который на дев машине не возпроизводился.

Неужели трудно вывод в файл вместо этого сделать? Ну да file_put_contents('filename', print_r($var, true)) — оно чуть больше набирать, но в продакшене дебажить в браузере???

Iskander Rashitov (isk.livejournal.com) № 7
file_put_contents('filename', print_r($var, true))

и получить многомегабайтный файл от всех пользователей вконтакта?

в надо заворачивать %)

Артур Мудрик № 8
Никогда не понимал монструозную кашу `var_dump` — есть же нормальный человечный `print_r`! Ну попробуйте вывести массив или выборку из базы через `var_dump` и `print_r` — ну в первом же случае получается какая-то каша, со всеми типами и прочей ерундой, которая не нужна; во втором же случае выводится нормальный аккуратный массивчик, где я всё вижу, что мне надо. ЧЯДНТ?
hshhhhh.name № 11
Никогда не понимал монструозную кашу `var_dump` — есть же нормальный человечный `print_r`! Ну попробуйте вывести массив или выборку из базы через `var_dump` и `print_r` — ну в первом же случае получается какая-то каша, со всеми типами и прочей ерундой, которая не нужна; во втором же случае выводится нормальный аккуратный массивчик, где я всё вижу, что мне надо. ЧЯДНТ?

php > print_r([NULL]); var_dump([NULL]);
Array
(
[0] =>
)
array(1) {
[0]=>
NULL
}

Вам этого достаточно?

maratische (maratische.livejournal.com) № 9
вседа так делаю.
меня (java программиста) часто вынуждает долг ковырять баги в опенсорс продукте testlink, который интегрирован с нашим ПО, я конечно догадываюсь о средствах дебага, но на прод ничего левого не просунешь, лень и так по быстрому хотя бы локализовать проблему часто достаточно.

но да, вероятно первая линия поддежки начнет массово получать тикеты с скриншотом велика (нашим продуктом пользуются ИТшники)
Lafut № 10
У нас просто обертка поверх которая проверяет вызов с какого адреса. Так что пользователи нет могут его увидеть
fluder.co № 14
Комментарий для Евгения Степанищева:

У нас тоже так, но бывают исключительные ситуации, когда в dev ошибка не воспроизводится, в том числе из-за другого домена. Я не оправдывают ребят из VK, конечно срамота :)
5 № 16
Можно отдавать var_dump только для определенного IP

Или только при наличии определённого GET-параметра или куки.

Svan № 17
и получить многомегабайтный файл от всех пользователей вконтакта?

Тащемта, file_put_contents по-умолчанию перезаписывает файл.

Имярекъ № 18
Комментарий для Svan:

Тащемта, и что это даст? Пока вы его открываете, он перезапишется 100500 раз и там будет результат от какого-нибудь Васи из Биробиджана.
SiMM № 20

Комментарий для Svan:

Тащемта, программисту голова дана не только для моргания и дислокации рота.

Ну и зачем тогда файл?

gogis № 22
В одной компании, где я работал и возникала редкая ситуация, когда на тестовой платформе баг не воспроизводился (там была другая база и кеш), и надо было срочно экспериментировать «на коленке», где делался дамп в случае передаче гет параметра/http заголовка/определенного юзера типа админа.

Вариант что я вижу тут — жесть конечно.
Alexey № 23
Думали, что быстро пофиксят, но получилось как всегда. Как в музыке, самые простые партии записываются дольше всего.