Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

5 Debug_HackerConsole: «хакерская» консоль, упрощающая отладку сайтов (Дмитрий Котеров)
Goto page 1, 2, 3, 4  Next
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Sun Sep 04, 2005 9:14 pm (написано за 4 секунды)
   Post subject: 5 Debug_HackerConsole: «хакерская» консоль, упрощающая отладку сайтов
Reply with quote

dklab.ru/lib/Debug_HackerConsole/
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Sun Sep 04, 2005 9:16 pm (спустя 2 минуты; написано за 11 секунд)
   Post subject:
Reply with quote

Старое обсуждение:
Debug_HackerConsole: "хакерская консоль" для вывода отладочных сообщений. (forum.dklab.ru/php/advises/Debug_hackerconsoleTheHackerConsoleForAConclusionOfDebuggingMessages.html)
Back to top
View user's profile Send private message Send e-mail
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 105
   поощрить/наказать

Location: Москва

PostPosted: Mon Sep 05, 2005 2:45 pm (спустя 17 часов 28 минут; написано за 1 минуту 29 секунд)
   Post subject:
Reply with quote

Есть такая замечательная программа PKiller (tit.g-band.ru/public/dis/pkiller/)
Так вот она вызывается именно по Ctrl+Shift+~..
Отказаться от этой фичи я не могу, а консоль поюзать охота...

Может, Ctrl+Shift+1?
Back to top
View user's profile Send private message
Миша Спларов
Участник форума



Joined: 17 Nov 2003
Posts: 821
Карма: 65
   поощрить/наказать

Location: Россия, Москва

PostPosted: Mon Sep 05, 2005 4:05 pm (спустя 1 час 20 минут; написано за 27 секунд)
   Post subject:
Reply with quote

Константин Жинько [tIT], в строчке "if (e.shiftKey && e.ctrlKey && (e.keyCode == 192 || e.keyCode == 96)) {" 192 замените на 49 в файле Js.js
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Sep 12, 2005 2:55 pm (спустя 6 дней 22 часа 49 минут; написано за 9 минут 26 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров
А как ы обошли вывод хакерской консоли для не-разработчиков?
мне пришлось сдклать такой изврат:
Code (php): скопировать код в буфер обмена
//
// ...
if (true === $admin) {
        if( ! @include_once LIB_DIR."/dk/lib/config.php")
        {
            exit (www.php.net/exit)( 'cannot load Hack Console' );
        }
        require_once "Debug/HackerConsole/Main.php";
       
        new Debug_HackerConsole_Main(true);
    }
Code (php): скопировать код в буфер обмена
// файлик  со всякими сервисными функциями
// ...
function dbg_msg($v, $group="message")
    {
        if (true === $admin) {
            Debug_HackerConsole_Main::out($v, $group);
        }
    }
И соответсвенно, пришлось поковырять стек:
Code (php): скопировать код в буфер обмена
//HackerConsole/Main.php, version 1.07, со строки 91:
        $stack = call_user_func (www.php.net/call_user_func)(array (www.php.net/array)(__CLASS__, 'debug_backtrace_smart'));
        $s = array_shift (www.php.net/array_shift)($stack);
        $s2 = ( !empty (www.php.net/empty)($stack) ) ? current (www.php.net/current)($stack) : array (www.php.net/array)();
        while (!empty (www.php.net/empty)($s['over_call_user_func'])) {
            $s = array_shift (www.php.net/array_shift)($stack);
            $s2 = ( !empty (www.php.net/empty)($stack) ) ? current (www.php.net/current)($stack) : array (www.php.net/array)(); // т.к. проверяется только $s; чтобы в цикле не было перескока
        }
       
        if (is_scalar (www.php.net/is_scalar)($v)) $text = "$v\n";
        else $text = Debug_HackerConsole_Main::print_r (www.php.net/print_r)($v, true);
        $obj->_hc_entries[$group][] = array (www.php.net/array)(
            'file'     => @$s['file'],
            'line'     => @$s['line'],
            'function' => (@$s2['function'] == 'include' || @$s2['function'] == 'include_once' || @$s2['function'] == 'require' || @$s2['function'] == 'require_once' || @$s2['function'] == '') ? @$s['function'] : @$s2['function'],
//            'function' => @$s['function'],
            'text'     => $text,
            'color'    => $color,
            'tip'      => $tip,
        );
Если dbg_msg() вызвали из некоторой функции - в tooltip будет имя этой функции; иначе - dbg_msg()
Проверка @$s2['function'] == '' - это так, на всякий случай...

и хотя это работает, но кажется неизящным...
Есть способ проще?

// исправлено. Насчет call_user_func() исправлять не стал, т.к. это нарушает ход обсуждения (хотя использую именно этот способ)

Last edited by Maus on Wed Apr 05, 2006 7:25 pm; edited 1 time in total
Back to top
View user's profile Send private message
Лобач Олег
Участник форума



Joined: 05 May 2003
Posts: 72
Карма: 6
   поощрить/наказать

Location: Новокузнецк

PostPosted: Tue Sep 13, 2005 4:04 am (спустя 13 часов 9 минут; написано за 1 минуту 53 секунды)
   Post subject:
Reply with quote

Maus wrote:
И соответсвенно, пришлось поковырять стек
Зачем стёк ковырять? ДК же эту функциональность уже реализовал?!
Внимательнее перечитайте статью и измените свою функцию dbg_msg так, как рекомендует ДК в статье.
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Sep 13, 2005 9:44 am (спустя 5 часов 40 минут; написано за 5 минут 13 секунд)
   Post subject:
Reply with quote

Лобач Олег
Сначала показалось, что слона я не приметил, но вот модификация скрипта из статьи:
Code (php): скопировать код в буфер обмена
<?php
// Include library code.
define (www.php.net/define)('LIB_DIR', realpath (www.php.net/realpath)('/home/foo/www'));
include_once LIB_DIR."/dk_tools/lib/config.php";
require_once "Debug/HackerConsole/Main.php";
new Debug_HackerConsole_Main(true);

// Dump random structure.
debug('conitiwa');
some_func('bu');
// Mediator function for short call of out() method
function debug($msg)
{
    // Use call_user_func_array() to save caller context.
    call_user_func (www.php.net/call_user_func)(array (www.php.net/array)('Debug_HackerConsole_Main', 'out'), $msg);
}
function some_func($jaa ='')
{
    //some action
    debug('Goo!');
}
?>
Press Shift+Ctrl+~ (tilde) to toggle the console.<br>
Move mouse pointer to debug message and make sure that
caller context is NOT inside debug() definition, but
points to debug() calling point.
<hr>
<?echo (www.php.net/echo) show_source (www.php.net/show_source)(__FILE__)?>
Как видно на приложенном обрезке скриншота, слон неправильный - сообщает только файл и строку, а имя функции всегда 'debug', что совершенно неинтересно. Имя функции, в которой стоит вызов 'debug', куда интереснее - ради чего и пришлось ковырять стек..


dklab_hack_console.gif
 Description:
Кусок скриншота. Мышка указывает на второе отладочное сообщение, 'Goo!'
 Filesize:  2.79 KB
 Viewed:  106752 Time(s)

dklab_hack_console.gif


Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Tue Sep 13, 2005 9:57 am (спустя 12 минут; написано за 1 минуту 32 секунды)
   Post subject:
Reply with quote

Maus wrote:
Имя функции, в которой стоит вызов 'debug', куда интереснее
Это да. Но пока что исходный класс не поддерживает такого, а выводит именно имя функции, которое Вы видите. Это связано с организацией backtrace-стека в PHP, как Вы верно заметили: нужно спускаться вниз, чтобы понять, что за функция вызвана. Только вот если были вложенные include, тогда надо не на 1 уровень спускаться ($s2 у Вас), а на столько, чтобы выйти из include-записей.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Tue Sep 13, 2005 9:59 am (спустя 2 минуты; написано за 1 минуту 47 секунд)
   Post subject:
Reply with quote

Насчет релиз-версии - я делаю примерно так:
Code (php): скопировать код в буфер обмена
if (DEBUG_MODE) {
        require_once "Debug/HackerConsole/Main.php";
        new Debug_HackerConsole_Main(true);
}
function debug($v, $group="message")
{
        if (is_callable (www.php.net/is_callable)($f=array (www.php.net/array)('Debug_HackerConsole_Main', 'out'))) {
                call_user_func (www.php.net/call_user_func)($f, $v, $group);
        }
}
Back to top
View user's profile Send private message Send e-mail
master_x
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Sep 19, 2005 11:45 am (спустя 6 дней 1 час 45 минут; написано за 2 минуты 55 секунд)
   Post subject: javascript
Reply with quote

Не знаю почему, но у меня консоль не выезжает при нажатии на комбинацию, сейчас пойду проверять каким номером у меня тильда идет, потому как клава не русская. Но есть подозрение, что неправильно работает ваш скрипт. Потому как там есть строка: перед if(!e) e=window.event, идет определение области и там в конце концов идет вариант body, мне кажется, что правильнее будет document.body... извините, что так туманно изъясняюсь... но в общем у меня не работает :)
Back to top
master_x
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Sep 19, 2005 11:52 am (спустя 6 минут; написано за 27 секунд)
   Post subject: все понятно
Reply with quote

Все понятно, у меня тильда идет 222 знаком, клава с раскладкой English (UK)...
Back to top
master_x
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Sep 19, 2005 12:03 pm (спустя 11 минут; написано за 1 минуту 46 секунд)
   Post subject: опять я
Reply with quote

Не знаю, принимаются пожелания или нет, но есть у меня одно: было бы хорошо, если бы в самом низу консоли было бы поле ввода, куда можно было бы вводить имена переменных, которые хочешь дампить при след исполнении скрипта... было бы очень удобно, не лезть в редактор а делать все через консоль...
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Sep 19, 2005 1:11 pm (спустя 1 час 7 минут; написано за 5 минут 51 секунду)
   Post subject:
Reply with quote

master_x wrote:
куда можно было бы вводить имена переменных, которые хочешь дампить при след исполнении скрипта.
ха! как Вы это себе представляете? Даже если это реализовать (через JSHTTPRequest), то
1) надо будет вводить еще один параметр, например:
Code (php): скопировать код в буфер обмена
Debug_HackerConsole_Main::out($msg, $group, $opt = true)
2) все равно в коде надо проставлять вызовы
3) сверстать внизу консоли аккуратную область ввода - напряжно (или разъезжается, или некрасиво, я пробовал (; )
Back to top
View user's profile Send private message
master_x
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Sep 19, 2005 2:15 pm (спустя 1 час 3 минуты; написано за 2 минуты 14 секунд)
   Post subject:
Reply with quote

уже никак не представляю :) уже сделал :) только в своей консоли. В самой консоли можно в самом низу после всех сообщений сделать input с невидимыми границами. Вводим в инпут имена переменных, которые надо дампить и сабмитим эту форму на себя. В результате при след. загрузке страницы в консоль выводятся дампы этих переменных. Механизм очень простой но удобный.
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Mon Sep 19, 2005 2:40 pm (спустя 24 минуты; написано за 1 минуту 15 секунд)
   Post subject:
Reply with quote

master_x
Так поделитесь с общественностью (если не жалко)!
Back to top
View user's profile Send private message
master_x
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Sep 19, 2005 2:49 pm (спустя 9 минут)
   Post subject: console
Reply with quote

В общем, конечно вы правы. моя консоль выводит дамп введенных переменных только в конце скрипта. Потому как вызов консоли там. Сделать полноценный рантайм дамп можно даже без JSHTTPRequest. Надо просто после каждой введенной комманды, менять атрибут src у скрытого изображения. К примеру, вводим комманду dump $_POST line 50 file xxx.php, джаваскрипт меняет src на debug.php?cmd=dump $_POST line 50 file xxx.php. Скрипт debugger.php меняет указанный файл и ставит в указанной строке комманду на вывод в консоль указанной переменной. Вот и все. При след. загрузках будет идти вывод в консоль. Можно добавить комманду remove dump line 50 file xxx.php. Сами понимаете, что произойдет. В общем получилось бы очень хорошо :) ИМХО.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Mon Sep 19, 2005 5:12 pm (спустя 2 часа 23 минуты; написано за 43 секунды)
   Post subject:
Reply with quote

Поддержку консольных команд я планировал потом сделать. Возможно, не именно таких, а других (есть же и другие отладочные вещи, которые хотелось бы включать и выключать на лету - тот же SourceMapper, например).
Back to top
View user's profile Send private message Send e-mail
master_x
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Sep 20, 2005 11:38 am (спустя 18 часов 25 минут; написано за 4 минуты 39 секунд)
   Post subject:
Reply with quote

Maus wrote:
master_x
Так поделитесь с общественностью (если не жалко)!
вот код дебагера, которому я посылаю комманды из консоли. ВНИМАНИЕ! код грязный, нуждается в модификации, никаких претензий не принимаю :) код был написан наспех.
Code (php): скопировать код в буфер обмена
<?php
        require("c:/server/snowie/mod/fileio.module.php");
        if($_GET['cmd'])
                {
                        $vargc=explode (www.php.net/explode)(' ', $_GET['cmd']);
                        for($x=0; $x<count($vargc); $x+=5)
                                {
                                        if($code=file (www.php.net/file)($vargc[$x+1]))
                                                {
                                                        switch($vargc[$x])
                                                                {
                                                                        case 'add':
                                                                                if($vargc[$x+4]{0}=='_')
                                                                                        {
                                                                                                $vargc[$x+4]="\$".$vargc[$x+4];
                                                                                        }elseif($vargc[$x+3]{0}=='-'){
                                                                                                $vargc[$x+4]="\$GLOBALS['".$vargc[$x+4]."']";                                                                                               
                                                                                        }else{
                                                                                                $vargc[$x+4]="'".$vargc[$x+4]."'";
                                                                                        }                                                                                                                                                               
                                                                                $code[$vargc[$x+2]-2].="dput('".$vargc[$x+3]."', ".$vargc[$x+4].");\n";
                                                                                break;
                                                                        case 'rem':
                                                                                if(strstr (www.php.net/strstr)($code[$vargc[$x+2]-1], 'dput')){ unset (www.php.net/unset)($code[$vargc[$x+2]-1]); }                                                                               
                                                                                break;
                                                                }
                                                        file_io($vargc[$x+1], 'w', implode (www.php.net/implode)("", $code));
                                                }                                       
                                }
                }
?>
здесь обрабатываются комманды вида:
command[~|add|rem] file line text[text|#b|#p|#d] variable
флаги #b, #p, #d означают breakpoint, print_r, var_dump.
как ставится вывод в консоль надеюсь понятно из скрипта.
этот скрипт как я и говорил вызывается при смене аттрибута src у скрытого изображения.
Back to top
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Wed Sep 28, 2005 5:20 pm (спустя 8 дней 5 часов 41 минуту; написано за 2 минуты 21 секунду)
   Post subject:
Reply with quote

В Опере, при русской раскладе консоль не отрабатывает при нажатии хоткея, в ИЕ всё ОК

Было бы здорово, видеть в консоли рядом с распечаткой переменной её имя. Правда, не знаю можно ли это реализовать.
master_x wrote:
В результате при след. загрузке страницы в консоль выводятся дампы этих переменных.
Если дампятся значения переменных к моменту завершения работы скрипта - неинтересно в 90% случаев.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Thu Sep 29, 2005 11:50 am (спустя 18 часов 30 минут; написано за 5 секунд)
   Post subject:
Reply with quote

Fog wrote:
Было бы здорово, видеть в консоли рядом с распечаткой переменной её имя. Правда, не знаю можно ли это реализовать.
Нельзя.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Tue Oct 04, 2005 12:00 pm (спустя 5 дней 10 минут; написано за 53 секунды)
   Post subject:
Reply with quote

Проверяю на Вашем сайте dklab.ru/lib/Debug_HackerConsole/demo/test - работает
Пробую запустить скачанные скрипты на локальной машине - пустая страница :(
Чего ему не хватает?
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Oct 04, 2005 12:53 pm (спустя 53 минуты; написано за 42 секунды)
   Post subject:
Reply with quote

Гость wrote:
Чего ему не хватает?
Вам лучше знать. А в HTMLе после </body> консоль приаттачилась?
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Oct 05, 2005 10:02 am (спустя 21 час 9 минут; написано за 51 секунду)
   Post subject:
Reply with quote

а html вывода нет
если я в тестовом комментирую строку new Debug_HackerConsole_Main(true);
то тогда вывод идет, пусть даже с руганью. иначе false :(
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Oct 11, 2005 1:16 pm (спустя 6 дней 3 часа 13 минут; написано за 1 минуту 5 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров
А объясните пожалуйста, зачем Вы ввели метод debug_backtrace_smart() ? Что-то до меня не доходит...
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Oct 11, 2005 1:27 pm (спустя 11 минут; написано за 5 минут 2 секунды)
   Post subject:
Reply with quote

И еще: при отсутсвии отладочных сообщений вылезает warning:
Quote:
Invalid argument supplied for foreach() in z:\####\lib\Debug\HackerConsole\Main.php on line 46
Если добавить кусок из v. 1.01:
Code (php): скопировать код в буфер обмена
//
        if (!isset (www.php.net/isset)($this->_hc_entries) || sizeof (www.php.net/sizeof)($this->_hc_entries)==0)
            $code .= "console.out(".$this->_toJs('No debug messages').", ".$this->_toJs('warning').", ".$this->_toJs('message').");\n";
        else {
                    foreach ($this->_hc_entries as $gid=>$elements) {
                            foreach ($elements as $e) {
                                    if ($e['tip'] === null) {
                                            $dr = str_replace (www.php.net/str_replace)('\\', '/', $_SERVER['DOCUMENT_ROOT']);
                                            $file = str_replace (www.php.net/str_replace)('\\', '/', $e['file']);
                                            $file =        preg_replace (www.php.net/preg_replace)('{^'.preg_quote($dr,'{}').'}is', '~', $file);
                                            $title = "at {$file} line {$e['line']}".
                                                    (!empty (www.php.net/empty)($e['function'])? ", {$e['function']}" : "");
                                    } else {
                                            $title = $e['tip'];
                                    }
                                    $text = $this->toPre($e['text']);
                                    if (!empty (www.php.net/empty)($e['color'])) $text = "<div style=\"color:{$e['color']}\">$text</div>";
                                    $code .= "console.out(".$this->_toJs($text).", ".$this->_toJs($title).", ".$this->_toJs($gid).");\n";
                            }
                    }
        }
, то разве не станет лучше?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Tue Oct 11, 2005 1:42 pm (спустя 14 минут; написано за 58 секунд)
   Post subject:
Reply with quote

Maus wrote:
зачем Вы ввели метод debug_backtrace_smart() ?
А там же в комментариях написано. Чтобы пропускать вызовы call_user_func(), но при этом не терять информацию.
Maus wrote:
при отсутсвии отладочных сообщений вылезает warning:
Лучше его так лечить:

    var $_hc_entries = array();
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Oct 11, 2005 1:59 pm (спустя 17 минут; написано за 24 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Чтобы пропускать вызовы call_user_func(), но при этом не терять информацию
Все равно не понял. Пример можно?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Wed Oct 12, 2005 10:31 am (спустя 20 часов 32 минуты; написано за 21 секунду)
   Post subject:
Reply with quote

t_call.php (в особенности)
t_mediator.php

Смотрели примеры из наблы?
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Thu Oct 20, 2005 3:18 pm (спустя 8 дней 4 часа 46 минут; написано за 1 минуту 35 секунд)
   Post subject:
Reply with quote

Maus wrote:
Гость wrote:
Чего ему не хватает?
Вам лучше знать. А в HTMLе после </body> консоль приаттачилась?
увы нет. вывод идет только если закоментировать консоль :( а так выдает
Code (html): скопировать код в буфер обмена
<html> (december.com/html/4/element/html.html)<body> (december.com/html/4/element/body.html)</body></html>
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Oct 20, 2005 4:04 pm (спустя 46 минут; написано за 42 секунды)
   Post subject:
Reply with quote

Гость
Давайте попробуем сначала.
Приведите сюда минимальную версию Вашего кода - а то гадать можно долго...
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Fri Oct 28, 2005 9:21 am (спустя 7 дней 17 часов 17 минут; написано за 1 минуту 45 секунд)
   Post subject:
Reply with quote

я скачал Debug_HackerConsole и ничего не меняя запускаю из директории test\Debug_HackerConsole\t_console.php

вот код
Code (php): скопировать код в буфер обмена
<?php
include_once "../../lib/config.php";
require_once "Debug/HackerConsole/Main.php";

new Debug_HackerConsole_Main(true);
call_user_func (www.php.net/call_user_func)('F1');

function F1() {
        call_user_func (www.php.net/call_user_func)('F2');
}

function F2() {
        echo (www.php.net/echo) "<pre>"; print_r (www.php.net/print_r)(Debug_HackerConsole_Main::debug_backtrace_smart()); echo (www.php.net/echo) "</pre>";
        Debug_HackerConsole_Main::out("test");
}

?>
test
<hr>
<?echo (www.php.net/echo) show_source (www.php.net/show_source)(__FILE__)?>
сам класс находится, но на экране не выводится вообще никакого html. на строке new Debug_HackerConsole_Main(true); начинается тишина.
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Fri Oct 28, 2005 9:30 am (спустя 8 минут; написано за 27 секунд)
   Post subject:
Reply with quote

кстати я даже явно пытался указать пусть к классу в файле t_console.php

include_once "c:\\Inetpub-Apache\\Apache2\\htdocs\\mamont-test\\Debug_HackerConsole\\lib\\config.php";
require_once "c:\\Inetpub-Apache\\Apache2\\htdocs\\mamont-test\\Debug_HackerConsole\\lib\\Debug\\HackerConsole\\Main.php";
Back to top
artik
Заглянувший



Joined: 23 Nov 2005
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Wed Nov 23, 2005 3:59 am (спустя 25 дней 18 часов 29 минут; написано за 2 минуты 42 секунды)
   Post subject: Проблема
Reply with quote

Есть проблема.

У вас на сайте всё работает нормально. Установил на локальной машине (Windows + ДЕНВЕР (пробовал различные версии)) и возникла трудность — консоль работает, но не убирается, т.е. нажимаю shift+ctrl+~ она появляется, нажимаю снова — она как бы снова выезжает, а должна наоборот прятаться.

Что делать? Очень удобная debug-утилита, чтоль, и хочется её использовать в работе. Помогите, please.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Wed Nov 23, 2005 10:55 am (спустя 6 часов 55 минут; написано за 30 секунд)
   Post subject:
Reply with quote

А какой браузер?
Версия консоли последняя? Раз работает на сайте, должно и у Вас, по идее, работать...
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Wed Nov 23, 2005 12:25 pm (спустя 1 час 29 минут; написано за 1 минуту 49 секунд)
   Post subject:
Reply with quote

artik
Проблема наблюдается в IE, не так ли? У меня такое возникает, тьолько когда JS переклинивает (так и не разобрался пока, почему - но не из-за консоли.)

Last edited by Maus on Wed Nov 23, 2005 1:02 pm; edited 1 time in total
Back to top
View user's profile Send private message
Лобач Олег
Участник форума



Joined: 05 May 2003
Posts: 72
Карма: 6
   поощрить/наказать

Location: Новокузнецк

PostPosted: Wed Nov 23, 2005 12:27 pm (спустя 1 минуту 48 секунд; написано за 50 секунд)
   Post subject:
Reply with quote

И я подтверждаю такое поведение. Тоже не понял в каком случае это происходит.
Back to top
View user's profile Send private message
artik
Заглянувший



Joined: 23 Nov 2005
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Wed Nov 23, 2005 1:32 pm (спустя 1 час 5 минут; написано за 2 минуты 30 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
А какой браузер?
Версия консоли последняя? Раз работает на сайте, должно и у Вас, по идее, работать...
Браузер, точнее надстройкак Maxthon 1.5.0, пробовал и просто в IE запускать. Версия консоли последняя (ну то есть та что на сайте). И консоль то сама по себе работает, т.е. информацию отображает верную и всё такое, просто не убирается с экрана когда повторно нажимаю и всё... :(
Back to top
View user's profile Send private message
artik
Заглянувший



Joined: 23 Nov 2005
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Wed Nov 23, 2005 1:37 pm (спустя 4 минуты; написано за 1 минуту 10 секунд)
   Post subject:
Reply with quote

Maus wrote:
artik
Проблема наблюдается в IE, не так ли? У меня такое возникает, тьолько когда JS переклинивает (так и не разобрался пока, почему - но не из-за консоли.)
Да, проблема именно в IE! :(
Сегодня попробую поставить другую (более старую) версию Java, посмотрим что получится. О результатах отпишу.
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Nov 23, 2005 2:52 pm (спустя 1 час 15 минут; написано за 2 минуты 17 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров
Этот вопрос вроде не возникал, но как быть в случае, если используется абсолютное позиционирование в css? Консоль оказывается "под дизайном", ничего полезного увидеть не удается. Подозреваю, что копать надо z-index, но сам не справился.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Wed Nov 23, 2005 7:40 pm (спустя 4 часа 47 минут; написано за 30 секунд)
   Post subject:
Reply with quote

artik, Java и JavaScript - совершенно разные и несвязанные вещи, ну сколько можно твердить...
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page 1, 2, 3, 4  Next
Page 1 of 4    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML