xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Отладочные функции в Devel

Опубликовано в

dpm($var) или dsm($var)

Выводит информацию о переменной в виде системного сообщения, используя Krumo.

dpm()/dsm()

dvm($var)

Выводит информацию о переменной в виде системного сообщения, используя var_dump($var).

dvm()

dpr($var, $return = false)

Выводит информацию о переменной вверху страницы, используя print_r($var, $return).

dpr()

dvr($var, $return = false)

Выводит информацию о переменной вверху страницы, используя var_dump($var, $return).

dvr()

kpr($var, $return = false)

Выводит информацию о переменной вверху страницы, используя Krumo.

kpr()

dargs()

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

dargs()

dd($var, $label = null)

Записывает информацию о переменной в файл drupal_debug.txt, который находится во временной директории (admin/settings/file-system).

ddebug_backtrace()

Выводит стек вызова функций вверху страницы, используя Krumo.

ddebug_backtrace()

db_queryd($query, $args = array())

Функция db_queryd(), это дебаг версия db_query(), которая после выполнения запроса $query, выводит его вверху страницы.

db_queryd()

dpq($query, $return = FALSE, $name = NULL)

Это аналог функции db_queryd() доступный только в Drupal 7. Выводит с помощью dpm() SQL запрос с подставленными аргументами. В качестве первого параметра принимает объект DBTNG.

Это краткий перевод статьи Debugging Drupal.

Похожие записи

Комментарии RSS

function call stack - это стек вызова функций, устоявшееся.

ок, будем знать

Никогда не понимал, в чём удобство этих функций.
У меня свой отладочный класс - обертка для krumo, что бы можно было выводить дампы переменных через drupal_set_message.

Поэтому нет необходимости:

1. устанавливать на все сайты devel
Класс цепляется ко всем сайтам с помощью auto_prepend_file.

2. Запоминать названия новых функций (dpm, dvm, dpr, dvr и т.д.) и их различия.
Достаточно запомнить название класса (одна буква).

d::print_r($var);    // print_r() + drupal_set_message()
d::var_dump($var);   // var_dump() + drupal_set_message()
d::dump();           // dump() + drupal_set_message()
Все остальные krumo-функции по аналогии.

db_query для D6 тоже свою делал, с подсветкой SQL синтаксиса и отображением времени выполнения запроса. На D7 пока не нашел способа реализовать такое же.

1. устанавливать на все сайты devel

Devel это гораздо большее чем эти пяток функций. И ставить его ничем не сложнее своего велосипеда — drush dl devel + drush en devel -y. Плюс он будет работать на продакшене и любом другом месте, где стоит друпал.

Запоминать названия новых функций

мне например достаточно одной — dsm(), остальными я пользуюсь редко.

Devel это гораздо большее чем эти пяток функций.

Мне там интересен был только профайлер запросов, которого в 7-ке вроде уже нет.

И ставить его ничем не сложнее своего велосипеда — drush dl devel + drush en devel -y

Ага, только потом не забывать drush dis devel + drush uninstall devel, когда сайт переносится на продакшн.

ну это не страшно, там много что ещё нужно отключить, помимо devel-а

Ага, только потом не забывать drush dis devel + drush uninstall devel, когда сайт переносится на продакшн.

Разве это небезопасно держать Devel не рабочем сайте? Просветите пожалуйста.

ничего опасного нет

Спасибо.

ссылка на источник благополучно переехала куда-то сюда: http://ratatosk.net/drupal/tutorials/debugging-drupal.html

ничего опасного нет

http://www.youtube.com/watch?feature=player_embedded&v=wpHS6Fkzre4 упоминается про devel/php

имея доступ к fullhtml наворотить можно всё что угодно и без devel/php :)

Супер,
могу еще добавить что в dpm($var) и dsm($var) есть 2й необязательный параметр name. Выводит надпись перед распечаткой переменной.

Я использую dpm(), поскольку dsm() в тупую вызывает dpm :) хотя dsm набрать на клавиатуре проще.

а вы не подскажите как вызвать dsm(); на страницах чекаута в drupal commerce?

через hook_form_alter:

/**
 * Implements hook_form_alter().
 */
function MYMODULE_form_alter (&$form, &$form_state, $form_id) {
 
  // Commerce checkout form.
  if (strstr($form_id, 'commerce_checkout_form_') !== FALSE) {
    dpm($form_state);
 
    $checkout_page_id = $form_state['checkout_page']['page_id'];
    $panes = commerce_checkout_panes(array('enabled' => TRUE, 'page' => $checkout_page_id));
    dpm($panes);
  }
}

Alex, thx!

А что бы дебажить аякс запросы, есть предложения?

firephp

С полпинка не поднялся... видимо где-то налажал.
понравилось решение вопроса с помощью https://www.drupal.org/project/devel_debug_log

Только у меня реальные данные drupal_set_message отображает только после 2-го рефреша страницы?

А, понял, 2-ой параметр должен быть FALSE

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании