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

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

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

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

Александр Банкин (инкогнито)
7 февраля 2016, 12:33

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

bolknote.ru (bolknote.ru)
7 февраля 2016, 12:41, ответ предназначен Александр Банкин

Например, xdebug.

mihdan (инкогнито)
7 февраля 2016, 13:00

Или так - https://github.com/barbushin/php-console

http://fluder.co (инкогнито)
7 февраля 2016, 13:02

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

Svan (инкогнито)
7 февраля 2016, 13:11

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

bolknote.ru (bolknote.ru)
7 февраля 2016, 13:53, ответ предназначен http://fluder.co

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

Iskander Rashitov (isk.livejournal.com)
7 февраля 2016, 13:54, ответ предназначен Svan

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

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

Артур Мудрик (инкогнито)
7 февраля 2016, 14:14

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

maratische (maratische.livejournal.com)
7 февраля 2016, 15:41

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

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

Lafut (инкогнито)
7 февраля 2016, 16:03

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

hshhhhh.name (инкогнито)
7 февраля 2016, 16:56, ответ предназначен Артур Мудрик

Никогда не понимал монструозную кашу `var_dump` — есть же нормальный человечный `print_r`! Ну попробуйте вывести массив или выборку из базы через `var_dump` и `print_r` — ну в первом же случае получается какая-то каша, со всеми типами и прочей ерундой, которая не нужна; во втором же случае выводится нормальный аккуратный массивчик, где я всё вижу, что мне надо. ЧЯДНТ?
php > print_r([NULL]); var_dump([NULL]);
Array
(
  [0] =>
)
array(1) {
  [0]=>
  NULL
}


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

hshhhhh.name (инкогнито)
7 февраля 2016, 16:58, ответ предназначен Артур Мудрик

Даже вот так

http://wargot.com (инкогнито)
7 февраля 2016, 20:39

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

http://fluder.co (инкогнито)
7 февраля 2016, 21:47, ответ предназначен bolknote.ru:

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

Имярекъ (инкогнито)
7 февраля 2016, 22:32

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

5 (инкогнито)
8 февраля 2016, 05:37

Можно отдавать var_dump только для определенного IP
Или только при наличии определённого GET-параметра или куки.

Svan (инкогнито)
9 февраля 2016, 18:42

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

Имярекъ (инкогнито)
9 февраля 2016, 19:40, ответ предназначен Svan

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

Svan (инкогнито)
10 февраля 2016, 09:05

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

SiMM (инкогнито)
10 февраля 2016, 13:02, ответ предназначен Svan

Тащемта, программисту голова дана не только для моргания и дислокации рота.
Ну и зачем тогда файл?

Имярекъ (инкогнито)
10 февраля 2016, 17:10, ответ предназначен SiMM

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

gogis (инкогнито)
15 февраля 2016, 14:29

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

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

Alexey (инкогнито)
11 марта 2016, 10:31

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

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)