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

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

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

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

Поделиться
Отправить
2016   php
23 комментария
Александр Банкин

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

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

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

Например, xdebug.

mihdan
http://fluder.co

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

Svan

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

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

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

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

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

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

Iskander Rashitov (isk.livejournal.com)

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

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

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

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

Артур Мудрик

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

maratische (maratische.livejournal.com)

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

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

Lafut

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

hshhhhh.name

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

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

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

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

hshhhhh.name

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

Даже вот так

http://pastebin.com/0HrGZGTd

http://wargot.com

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

http://fluder.co

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

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

Имярекъ

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

5

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

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

Svan

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

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

Имярекъ

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

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

Svan

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

SiMM

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

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

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

Имярекъ

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

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

gogis

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

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

Alexey

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

Популярное