Отладка скрипта

При отладке скрипта я использую

  • Дедовские методы: команды echo, print_r

    Голосов: 130 75,1%
  • Отладочные скрипты и классы

    Голосов: 7 4,0%
  • Отладочный Порт

    Голосов: 0 0,0%
  • PHPEdit

    Голосов: 6 3,5%
  • Zend Studio

    Голосов: 14 8,1%
  • что-то иное (написать)

    Голосов: 6 3,5%
  • xdebug

    Голосов: 5 2,9%
  • DBG

    Голосов: 5 2,9%
  • ADP

    Голосов: 0 0,0%

  • Всего проголосовало
    173

Alexandre

PHPПенсионер
я отлаживаю скрипт на локальной машине под Win:
дедовские методы, иногда PHPEdit...но он мне не всегда подходит, т.к. с его помощью нельзя принять POST запрос (PHPEdit использует встроенный модуль PHP ...)
а писать дополнительный модуль, который иммитирует принятые POST переменные влом....

как отлажу скрипт, переношу на хостинг заказчика, но тут-то и возникают всякие подводные камни и сложности...
то скрипт не записывает в файл, т.к нет наличия соответствующих прав доступа (типа 777)
то аплоад неработает, по тойже причине....
то еще что-то непредвиденное вылезет...

На чужом хостинге тоже не поэксперементируешь... можно подгрузить только отладочные классы... дебугены исключены !

так что остаются старыые испытанные дедовские методы
 

Verk

Guest
Автор оригинала: Alexandre ИТОГО----------лично я (и не только я) открыл для себя много нового
Не хотел и не открыл.
Ну продолжать "делать ЭТО стоя в гамаке на лыжах", как и обычно, ничто не мешает :)
 

Gans

Guest
Дедовский способ, самый проверенный и надежный + FAR + colorer. Помоему для скриптового языка вполне достаточно. Это лично мое мнение. :)
 

arhip

Новичок
У меня сервер на линухе, работаю на винде.
Код пишу в Zend Studio и тамже отлаживаю (remote debug).
Ну и, конечно, дедовские способы :)
 

Verk

Guest
Есть более удобные и быстрые способы отладки, оптимизации и предотвращения ошибок чем дедовский. Это лично мое мнение.
 

Verk

Guest
Я уже написал чем пользуюсь лично я, от остальных также услышал пару интересных вариантов, которые нужно будет, _как мининум_, попробовать самому и составить личное более объективное мнение.

Просто, Alexandre, воздержись, пожалуйста, от фраз типа "ИТОГО" и "так что остаются старыые испытанные дедовские методы ". Много всяких разных людей прочитают этот топик и будут делать как дядька c надписью 'TeaM PHPClub' заключил.
 

Макс

Старожил PHPClub
то скрипт не записывает в файл, т.к нет наличия соответствующих прав доступа (типа 777)
то аплоад неработает, по тойже причине....
то еще что-то непредвиденное вылезет...
обычно, благодаря опыту, такие проблемы решаются за 5 минут.

Классный способ решать проблемы - текст ошибки в google закинуть и почитать ссылки, которые он выдаст (но это если ошибка до этого тебе не встречалась)
 

astonix

Guest
Автор оригинала: Alexandre ИТОГО----------лично я (и не только я) открыл для себя много нового
Автор оригинала: Verk
Не хотел и не открыл.
Ну продолжать "делать ЭТО стоя в гамаке на лыжах", как и обычно, ничто не мешает :)
А еще можно логически инверсировать утверждение оппонента (придумать дополнительное "не") и спорить с ним, доказывая исходное утверждение ;)

Disclaimer: сие не флейм, но поправка ;)
 

NEK

Guest
Не знаю вот это:
PHP:
<?function dump($var,$level=0,$z=0){
    if ((!is_array($var))&&(!is_object($var))){
       $rez='<b>'.htmlspecialchars($var).'</b> - '.gettype($var).'<br>';
       if ($z==0) { echo $rez;return (0);}
       else return($rez);
    }
    else {
       echo '<b>'.gettype($var).'</b><hr>';
       for(reset($var),$level++;list($k,$v)=each($var);){
         echo ''.str_repeat('&nbsp;',$level*2).$k.'=>'.dump($v,$level,1);
       }
    }
  }?>
может и просто , но удобно !!!
 

tony2001

TeaM PHPClub
NEK:
имхо значительно проще сначала рекурсивно htmlspecialchars() провести, а потом var_dump(); сделать.
и не выдумывать свой var_dump();
 

Дmитpий

Guest
Привет.
Вообче-то, прежде чем содиться писать скрипт я продумываю все этапы и стараюсь весь его держать в памяти.
ЭМУЛЯТОР PHP делаю из мозга.

Если очень замороченные данные, то echo спасает.

Вообче у меня бывали раньше проблемы в общении с MySQL и я написал функцию mysql_show, которая ресует таблицу того, что спросили у базы по дескриптору.

Сейчас так на вскидку я её не помню, но где-то в архивах она валяется.

Я вообче за активную отладку программы.
Знавал людей, которые писали полностью скрипты, а потом тестировали на хостинге, а к вечеру были похожи на зомби :D
 

FYBITS

Guest
Лично я помимо дедовских способов использую самописный пакет функций (которые, в принципе, очень похожи на функции gw128). Вообще изначально они были Котеровым предложены, а потом я их чуток доработал, добавил расцветку a-la EditPlus:
PHP:
function cycleDump (&$varName, $dumpLevel = 0) {
	if (is_array ($varName))
		$varType = "<font color=0000ff>array</font> <font color=808000>[</font><font color=ff00ff>".count ($varName)."</font><font color=808000>]</font>";
	elseif (is_object ($varName))
		$varType = "<font color=0000ff>object</font>";
	else
		$varType = "";

	if ($varType) {
		echo "$varType\n";
		for (reset ($varName), $dumpLevel++; list ($key, $value) = each ($varName); ) {
			if (is_array ($value) && $key === "GLOBALS") continue;
			for ($i = 0; $i < $dumpLevel * 4; $i++) echo " ";
			echo "<b><font color=008080>".htmlspecialchars ($key)."</font></b> <font color=808000>=></font> ", cycleDump ($value, $dumpLevel);
		}
	} elseif (gettype ($varName) == "boolean") {
		$varName ? $value = "TRUE" : $value = "FALSE";
		echo "<font color=0000ff>".gettype ($varName).'</font> <font color=0000ff>', $value, '</font>'."\n";
	} else 
		echo "<font color=0000ff>".gettype ($varName).'</font> <font color=ff00ff>"', trim (@htmlspecialchars ($varName)), '"</font>'."\n";
}

function dumpVariable (&$varName, $itsName = "") {
	if (!$itsName)
		$variable = "<font color=ff0000>Variable</font> <font color=808000>=</font> ";
	else
		$variable = "<font color=ff0000><font color=0000ff>$</font><font color=008080>".$itsName."</font></font> <font color=808000>=</font> ";
	
	ob_start ();
	if ((is_array ($varName) || is_object ($varName)) && count ($varName))
		echo "\n<pre style='font-size: 9pt;'>\n".$variable, cycleDump ($varName), "</pre>\n";
	else
		echo "\n<tt style='font-size: 9pt;'>".$variable, cycleDump ($varName), "</tt>\n";

	$sendData = ob_get_contents ();
	flush ();
	ob_end_clean ();

	echo $sendData;
}
 

D!!!

Новичок
Классная тема для дискусии

Рекомендую пользоваться программой <Dreamweaver MX>, очень удобная штука. Она конечно не проверяет на ошибки сам скрипт, но выделяет разными цветами, и не только PHP, но еще и Java, CSS и т.д.
Конечно если кто знает программу для отладки, напишите, плиз.
 

yUAC

Guest
Любая уважающая себя программа а-ля HomeSite или EditPlus раскрашивает все разными цветами - html, css, javascript, это конечно только малая часть...

Насчет Котерова - у него есть несколько функций, которые он выложил у себя на форуме... Они считают время генерирования скрипта и показывают самые "тормозящие" моменты и указывают, на какой строчке и в каком файле это происходит. Кстати говоря удобная вещь при отладке, когда не знаешь, на каком месте скрипт так тормозит...

Правда при отладке моих скриптов все равно ничего улучшить не получается - 0.3 секунды это не так уж и много...
 

Verk

Guest
Мануал по отладке

Хорошо бы теперь кто-нибудь взял, да и написал ман или faq по дебагу исходя из всего вышенаписанного.

PS А я бы ему помог :)
 
Сверху