Определение вызывающей ф-ции и стек вызовов

Автор handself, 13 июля 2019, 19:09:36

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

handself

13 июля 2019, 19:09:36 Последнее редактирование: 13 июля 2019, 19:50:39 от handself
Если кто-то любит копаться в коде то ему пригодится простенькая ф-ция для того, чтобы увидеть откуда происходит обращение к выбранному участку кода, какие передаются параметры и посмотреть весь стек вызовов.

См. вложение к этому сообщению.

handself

14 июля 2019, 21:58:05 #1 Последнее редактирование: 15 июля 2019, 11:57:04 от handself
Хотел бы немного добавить.
Например, у вас имеется участок кода который вызывается из нескольких других мест.
Например при обращении браузера к различным url будет вызываться один и тот же участок кода но из разных ф-ций. Как узнать как проходит вызов кода?
Все просто.
В исследуемом участке вставляете ф-цию debug и в стеке смотрите. Также видны какие параметры были переданы в функцию в которой вызвана ф-ция debug
Еще плюс в том, что добавив в debug переменную - можно исследовать содержимое этой переменной в данный момент времени. Можно увидеть содержимое переменных которых обычными способами сложно или не возможно увидеть.

Скопировать код ф-ции можно здесь:

Код
function debug($str)
{
    $e = new Exception();
    $trace = $e->getTrace();
    $last_call = $trace[1];
    file_put_contents("/path_to_file/debug.html","<html><head><title>DEBUG</title><style>pre{background-color:#e6e6e6;padding:5px;}</style></head><body><p><pre>". print_r($last_call,true). "</pre></p><p><h3>Переменная</h3><pre>" . print_r($str, true) . "</pre></p><p><h3>TrackTrace</h3><pre>" . print_r($e->getTraceAsString(),true) ."</pre></p></body></head></html>");
}



GeorG

Цитата: handself от 13 июля 2019, 19:09:36См. вложение к этому сообщению.
:facepalm:

Тут есть тег CODE, для вставки кода текстом, выкладывать код скрином, который проще было бы скопировать человеку, чем переписывать, это даже не просто моветон, а цинизм :)
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

handself

Цитата: GeorG от 14 июля 2019, 22:08:08цинизм :)
Цини́зм (лат. Cynismus от др.-греч. Kυνισμός) или циничность -- откровенное, вызывающе-пренебрежительное и презрительное отношение к нормам общественной морали, культурным ценностям и представлениям о благопристойности[1][2][3], отрицательное, нигилистическое отношение к общепринятым нормам нравственности[4], к официальным догмам господствующей идеологии[5].
Поведение, выражающее осознанное и демонстративное игнорирование определённых моральных ценностей.


Я не проявлял цинизма в отношении пользователей этого форума.
У меня просто не получилось вставить код через bbc code.

Вы так быстры на колкости, что это всем нравится. Аж 2-м человекам. А мой пост отметил только  STALKER.
Наверное по-этому здесь активность пользователей аж бьет ключом.

GeorG

Вы всё правильно процитировали из вики, и я знаю значения этого слова.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru