Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

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

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

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

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

23 комментария
Александр Банкин 2016

А как отлаживают сейчас?

Евгений Степанищев (bolknote.ru) 2016

Комментарий для Александр Банкин:

Например, xdebug.

mihdan 2016
fluder.co 2016

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

Svan 2016

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

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

Евгений Степанищев (bolknote.ru) 2016

Комментарий для http://fluder.co:

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

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

Iskander Rashitov (isk.livejournal.com) 2016

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

file_put_contents(’filename’, print_r($var, true))

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

в <div style=«display:none»> надо заворачивать %)

Артур Мудрик 2016

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

maratische (maratische.livejournal.com) 2016

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

но да, вероятно первая линия поддежки начнет массово получать тикеты с скриншотом велика (нашим продуктом пользуются ИТшники)

Lafut 2016

У нас просто обертка поверх которая проверяет вызов с какого адреса. Так что пользователи нет могут его увидеть

hshhhhh.name 2016

Комментарий для Артур Мудрик:

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

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

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

hshhhhh.name 2016

Комментарий для Артур Мудрик:

Даже вот так

http://pastebin.com/0HrGZGTd

wargot.com 2016

Сам так иногда делаю на проде, правда прячу var_dump в комментарий <!-​-​ .... -​-​>

fluder.co 2016

Комментарий для Евгения Степанищева:

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

Имярекъ 2016

Можно отдавать var_dump только для определенного IP

5 2016

Можно отдавать var_dump только для определенного IP

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

Svan 2016

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

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

Имярекъ 2016

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

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

Svan 2016

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

SiMM 2016

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

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

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

Имярекъ 2016

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

Видимо, человек живет по принципу «В любой непонятной ситуации исторгай дамп в файл»

gogis 2016

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

Вариант что я вижу тут — жесть конечно.

Alexey 2016

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