Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 12
  1. #1
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±

    "Флуд" в mysql_log:

    Доброго времени суток. Переодически в мускул лог, вот что выскакивает:
    PHP код:
    [18:20:28] [WARNINGcache_get_field_content no active cache
    [18:20:28] [WARNINGcache_get_field_content no active cache
    [18:20:28] [WARNINGcache_get_field_content no active cache
    [18:36:19] [WARNINGcache_get_field_content no active cache
    [18:36:19] [WARNINGcache_get_field_content no active cache
    [18:36:19] [WARNINGcache_get_field_content no active cache
    [18:46:55] [WARNINGcache_get_field_content no active cache
    [18:46:55] [WARNINGcache_get_field_content no active cache 
    Самое главное, я не знаю откуда это именно... В моде данных строк - полно.

  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Если использовать компилятор от Zeex, в котором добавлена константа __line, содержащая номер текущей строки в коде, то можно перехватить все вызовы cache_get_field_content, чтобы добавить вывод __line в консоль.

    Я бы показал код, но очень охота спать и вряд ли получится без ошибок. Возможно, завтра с утра, если меня никто не опередит с реализацией идеи.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. Пользователь сказал cпасибо:
    StevenH (26.01.2016)
  4. #3
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если использовать компилятор от Zeex, в котором добавлена константа __line, содержащая номер текущей строки в коде, то можно перехватить все вызовы cache_get_field_content, чтобы добавить вывод __line в консоль.

    Я бы показал код, но очень охота спать и вряд ли получится без ошибок. Возможно, завтра с утра, если меня никто не опередит с реализацией идеи.
    Буду ждать :)

  5. #4
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если использовать компилятор от Zeex, в котором добавлена константа __line, содержащая номер текущей строки в коде, то можно перехватить все вызовы cache_get_field_content, чтобы добавить вывод __line в консоль.

    Я бы показал код, но очень охота спать и вряд ли получится без ошибок. Возможно, завтра с утра, если меня никто не опередит с реализацией идеи.
    Т.е. вы про это?
    PHP код:
    cache_get_field_content(/*...*/), printf("Line: %d"__line); 

  6. #5
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Т.е. вы про это?
    PHP код:
    cache_get_field_content(/*...*/), printf("Line: %d"__line); 
    Нет, он про это:
    PHP код:
    stock DEBUG_cache_get_field_content(row, const field_name[], destination[], connectionHandle 1max_len sizeof(destination))
    {
        
    printf("line %d: cache_get_field_content(%d, \"%s\", \"%s\", %d, %d)"__linerowfield_namedestinationconnectionHandlemax_len);
        return 
    cache_get_field_content(rowfield_namedestinationconnectionHandlemax_len);
    }
    #if defined _ALS_cache_get_field_content
        #undef cache_get_field_content
    #else
        #define _ALS_cache_get_field_content
    #endif
     
    #define cache_get_field_content DEBUG_cache_get_field_content 
    Автор, вставляй этот код перед всеми вызовами cache_get_field_content, бери компилятор отсюда: https://github.com/Zeex/pawn/releases, компилируй, запускай и смотри логи.


    Хотя я не уверен в том, что это сработает, ведь номер строки берётся у вызова printf, а он всегда находится на одном месте.

    UPD: Ниже исправленный вариант.
    Последний раз редактировалось ziggi; 27.01.2016 в 00:34.

  7. #6
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Нет, он про это:
    PHP код:
    stock DEBUG_cache_get_field_content(row, const field_name[], destination[], connectionHandle 1max_len sizeof(destination))
    {
        
    printf("line %d: cache_get_field_content(%d, \"%s\", \"%s\", %d, %d)"__linerowfield_namedestinationconnectionHandlemax_len);
        return 
    cache_get_field_content(rowfield_namedestinationconnectionHandlemax_len);
    }
    #if defined _ALS_cache_get_field_content
        #undef cache_get_field_content
    #else
        #define _ALS_cache_get_field_content
    #endif
     
    #define cache_get_field_content DEBUG_cache_get_field_content 
    Автор, вставляй этот код перед всеми вызовами cache_get_field_content, бери компилятор отсюда: https://github.com/Zeex/pawn/releases, компилируй, запускай и смотри логи.

    Хотя я не уверен в том, что это сработает.
    Cпасибо. И вопрос, куда эти файлы кидать? И вообще зачем компилятор для Linux?

  8. #7
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Cпасибо. И вопрос, куда эти файлы кидать? И вообще зачем компилятор для Linux?
    В общем, я лопухнулся. Правильно будет так (но я не уверен):
    PHP код:
    #define cache_get_field_content%0 printf("cache_get_field_content: line %d", __line);cache_get_field_content%0 
    Файлы кидать в каталог pawno (скорее всего ты пользуешься именно им) с заменой существующих.
    А компилятор для Linux нужен для того, чтобы компилировать скрипты из-под Linux. Раз спрашиваешь, то тебе этот компилятор не нужен.
    Последний раз редактировалось ziggi; 27.01.2016 в 00:33.

  9. Пользователь сказал cпасибо:
    StevenH (27.01.2016)
  10. #8
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    В общем, я лопухнулся. Правильно будет так (но я не уверен):
    PHP код:
    #define cache_get_field_content%0 printf("cache_get_field_content: line %d", __line);cache_get_field_content%0 
    Файлы кидать в каталог pawno (скорее всего ты пользуешься именно им) с заменой существующих.
    А компилятор для Linux нужен для того, чтобы компилировать скрипты из-под Linux. Раз спрашиваешь, то тебе этот компилятор не нужен.
    У меня этот макрос привёл к зависанию компилятора (скорее всего, из-за рекурсии).
    Ок, как и обещал:
    PHP код:
    stock debug_cache_get_field_content(linerow, const field_name[], destination[],
        
    connectionHandle 1max_len sizeof(destination))
    {
        
    printf("cache_get_field_content: line %d"line);
        return 
    cache_get_field_content(rowfield_namedestinationconnectionHandlemax_len);
    }
    #if defined _ALS_cache_get_field_content
        #undef cache_get_field_content
    #else
        #define _ALS_cache_get_field_content
    #endif
    #define cache_get_field_content(%0) debug_cache_get_field_content(__line,%0) 
    У меня нет плагина для работы с MySQL, чтобы проверить код, но я проверил этот метод, перехватив функцию heapspace и всё сработало.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  11. Пользователь сказал cпасибо:
    StevenH (27.01.2016)
  12. #9
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    У меня этот макрос привёл к зависанию компилятора (скорее всего, из-за рекурсии).
    Ок, как и обещал:
    PHP код:
    stock debug_cache_get_field_content(linerow, const field_name[], destination[],
        
    connectionHandle 1max_len sizeof(destination))
    {
        
    printf("cache_get_field_content: line %d"line);
        return 
    cache_get_field_content(rowfield_namedestinationconnectionHandlemax_len);
    }
    #if defined _ALS_cache_get_field_content
        #undef cache_get_field_content
    #else
        #define _ALS_cache_get_field_content
    #endif
    #define cache_get_field_content(%0) debug_cache_get_field_content(__line,%0) 
    У меня нет плагина для работы с MySQL, чтобы проверить код, но я проверил этот метод, перехватив функцию heapspace и всё сработало.
    Спасибо, а другой компилятор, нечего не нужно?

  13. #10
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    PHP код:
    undefined symbol "__line" 
    Вручную надо добавлять или всё таки не тем компилятором запахал?

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •