Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: хочу сделать подробный дебаг, и при возможности отключать его
Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013 Откуда: Россия, Москва
Помог: 1 раз(а)
хочу иметь возможность включать-отключать дебаговую информацию по вызовам методов и прочее. Мне приходится так делать, т.к. досталась программа полностью асинхронная, написанная абсолютно несведущим человеком. Сейчас там происходит хаос, и мне просто необходимо знать что происходит, но засорять код я не хочу.
так же сделаны классы Adbg и Bdbg, которые наследуются от A и B соответственно.
я создал фабрику, которая при значении true в переменной DEBUG, выдает вместо A - Adbg, а вместо B - Bdbg.
Все хорошо и замечательно, пока не захочешь использовать методы из Adbg в Bdbg. В случае Bdbg получается так:
A<-B<-Bdbg
т.е. было бы изумительно, если A превратилась в Adbg
плюсы моего решения таковы, что основной код вообще не знает что его дебажут и сам он чистенький и остается понятным (классы A и B), а в классах для дебага (Adbg, Bdbg) есть только всякие логи и прочая инфа.
вопрос, есть ли ещё какие решения имеющие такой же или похожий плюс? или как проще заменить A на Adbg (в примере чуть выше)
(так же добавлю, что декоратор тут не поможет, т.к. открытых методов у меня 1-2, и ещё очень много закрытых, открывать закрытые неохота (я понимаю что в js такого понятия нету, но так проще держать все в порядке))
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
а чем не устраивает инструмент разработчика в Chrome? Firebug?
esterio
Отправлено: 23 Июля, 2013 - 16:50:51
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
ИМХО зачем себе усложнять жызнь. пользуйтесь console.log при разработке и все. Потом акуратненко зачищаем после себя и имеем готовое решение, без многоуровневых extend и прочего.
AmsTaFF
Отправлено: 23 Июля, 2013 - 16:57:22
Гость
Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013 Откуда: Россия, Москва
Помог: 1 раз(а)
я и так пользуюсь и firebug'ом, и вывожу console.log.
но проблема в том, что выводить приходится много и багов, которые надо исправить, много. И мне необходима ф-ция включения/отключения дебага каких-то классов.
задача заключается в том, чтобы видеть что происходит в программе, как она отработала, какие данные загрузила,какие значения отправила, какие эвенты запустила, а потом отключить часть из этой информации. Если просто в методах прописать console.log'и, то консоль будет засорена, а при ещё одном баге, снова придеться писать дебаговую информацию
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
точки останова? не?
трассировка? не?
AmsTaFF
Отправлено: 23 Июля, 2013 - 17:06:09
Гость
Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013 Откуда: Россия, Москва
Помог: 1 раз(а)
скажем так, у меня нет необходимости пошагово изучать работу программы, или где-то её останавливать, чтобы посмотреть на окружение, есть необходимость знать что произошло при том или ином клике и очень подробно знать, какой обработчик эвента запустился, когда пришли данные от сервера, и когда они были на него посланы и с какими данными
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
ээммм....ну я не знаю какие там еще есть инструменты...но имхо достаточно вставить точку останова в обработчик и кликнуть мышу чтоб узнать какой запустился...и тд итп (Добавление)
имхо тут нужен не инструмент а умение
esterio
Отправлено: 23 Июля, 2013 - 17:21:29
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
помоему console.log и трасировкы хватает с головой (Добавление)
LIME пишет:
имхо тут нужен не инструмент а умение
+1
AmsTaFF
Отправлено: 24 Июля, 2013 - 08:48:24
Гость
Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013 Откуда: Россия, Москва
Помог: 1 раз(а)
эххх... ладно, может быть я неправильное решение принял. Но вот представьте что у вас есть асинхронное приложение из 3к строчек. Где присутствует много эвентов, названия методов и свойств "неговорящие" (например методы val, set, setValue делают практически одно и то же) + производится загрузка данных из БД или кэша LocalStorage + присутствует большое кол-во багов (например баг, когда данные грузятся 4-5 раз (хоть и из кэша, но 4-5 раз!)).
и, я думаю что у всех возникнет желание взять под контроль эту программу и знать что происходит. Но, если просто написать везде console.log, то записи засрут console, из-за этого необходимо как-то их фильтровать. (и добавлю, что экземпляров класса A - 20+, а B - 6)
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
AmsTaFF пишет:
в чем я не прав?
не знаю...но мне страшно
esterio
Отправлено: 24 Июля, 2013 - 13:35:49
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
AmsTaFF
Первое что хочеться спросить: ето Ваш код или Вы ковиряете чужой?
IllusionMH
Отправлено: 24 Июля, 2013 - 13:43:22
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
esterio, в первой строке ж
AmsTaFF пишет:
Мне приходится так делать, т.к. досталась программа полностью асинхронная
AmsTaFF
Отправлено: 24 Июля, 2013 - 14:18:14
Гость
Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013 Откуда: Россия, Москва
Помог: 1 раз(а)
esterio, если бы код был свой, такого изврата мне не пришлось бы делать.
Пришлось перейти на другой способ (т.к. реализовать то, что хотел раньше можно только танцами с бубном и извратом страшным), хоть и немного громоздкий.
делаю ф-ции add и _add, в _add - весь функционал , а в add, всякие debug'и и прочий мусор неинтересный... (я не знаю как такой способ называется)
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
не всегда достаточно console.log и трассировки.
Иногда нужно видеть именно значения некоторого набор переменных, а чуть позже - другого. При этом выводя все это в консоль - получаем простыню, в которой сложно ориентироваться.
Можно использовать console.group(), но тоже не всегда помогает.
Приходится постоянно, коментировать\раскоментировать определенный вывод дебаг-сообщений
И в таком случае переключатель был бы весьма полезен.
Впрочем, я не знакомился глубоко с файрбагом, возможно у него есть встроенные средства управления логами
----- Чем больше узнаю, тем больше я не знаю.
AmsTaFF
Отправлено: 24 Июля, 2013 - 14:51:45
Гость
Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013 Откуда: Россия, Москва
Помог: 1 раз(а)
DelphinPRO, именно
сейчас сделал такой простой самопис переключателя, пока его хватает:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.