Сначала добавьте файл .env
в root
и добавьте variable and value
blockquote>
.env
содержимое файлаTIMEOUT=3000
Сейчас в вашем
blockquote>layout's code section
добавьте этот кодfunction onStart() { $this['env_timeout'] = env('TIMEOUT', '2000'); // ----------- env var name - ^ ^ - default value }
Теперь в вашем
blockquote>layout's markup section
добавьте это код
Теперь вы можете использовать его в любом месте в
blockquote>js
, просто убедитесь, что вы Добавьтеthis script
before your js file
, чтобы переменная была доступна дляjs file
Если у вас возникнут какие-либо проблемы, пожалуйста, прокомментируйте .
Если вы все еще заинтересованы в добавлении пропуска GCC, вы можете начать читать вики-материал GCC примерно так:
Вам нужно использовать GCC? LLVM выглядит так, как будто будет работать. Он написан на C ++, и очень легко написать пропуск .
Это интересный вопрос. Я собираюсь рассмотреть концепции вокруг вопроса, а не отвечать на вопрос напрямую, потому что, ну, я не знаю так много о внутренностях gcc.
Вы, вероятно, уже исследовали некоторые манипуляции с исходным кодом на более высоком уровне, чтобы достичь того, чего вы хотите достичь; что-то вроде
int main(int argc, char ** argv) {
return dbg(foo(argc));
}
, вставленное с макросом в функцию "foo", возможно. Однако, если вы ищете взлом компилятора, то, вероятно, вам не нужно изменять исходный код.
Здесь обсуждаются некоторые расширения gcc , которые звучат немного как то, что вы собираетесь , Если у gcc есть что-то, что делает то, что вы хотите, это, вероятно, будет задокументировано в области расширений языка C документации. Я не мог не найти ничего похожего на то, что вы описали, но, возможно, поскольку вы лучше понимаете, что ищете, вы лучше поймете, как его найти.
Сценарий GDB очень хорошо справился бы с выводом. отладка, но похоже, что у вас есть большие планы, чем просто выполнение printf. Внедрение в код важной логики, кажется, то, что вам нужно.
Это напоминает мне некоторые уловки динамического компоновщика, с которыми я недавно сталкивался. Библиотека , вставляющая , может вставлять код вокруг вызовов функций, не затрагивая исходный источник. Пример, с которым я столкнулся, был на Solaris, но, вероятно, есть аналог на других платформах.
Только что наткнулся на опцию -finstrument-functions, задокументированную здесь
-finstrument-functions
Генерировать вызовы инструментария для входа и выхода в функции. Сразу после функции entry и непосредственно перед выходом из функции будут вызваны следующие функции профилирования с адресом текущей функции и ее сайта вызова. (На некоторых платформах __builtin_return_address не работает за пределами текущей функции, поэтому сайт вызова в противном случае информация может быть недоступна для функций профилирования.)
void __cyg_profile_func_enter (void *this_fn,
void *call_site);
void __cyg_profile_func_exit (void *this_fn,
void *call_site);
Но я думаю, это не сработает, потому что вы не можете изменить возвращаемое значение из функций профилирования.
Чтобы ответить на ваш вопрос: gcc - довольно популярный платформа компилятора для исследования компилятора, так что да, я уверен, что кто-то это сделал.
Однако я не думаю, что это что-то делается на выходных. Подключение к генерации кода gcc - это не то, чем вы будете заниматься на выходных. (Я не уверен, какова ваша область действия и сколько времени вы готовы потратить.) Если вы действительно хотите взломать gcc, чтобы делать то, что вы хотите, вы, безусловно, захотите начать с обсуждения этого на одном из gcc списки рассылки .
Советы: не думайте, что люди читали другие ваши вопросы. Если вы хотите сослаться на вопрос, добавьте ссылку на него, если хотите, чтобы люди его нашли.
GCC, коллекция компиляторов GNU, представляет собой большой набор, и я не думаю, что взломать его исходный код Ваш ответ для поиска проблем в одном приложении.
Звучит так, как будто вы больше ищете инструменты для отладки или профилирования, такие как gdb и его различные внешние интерфейсы (xgdb, ddd) и и gprof . Инструменты проверки памяти / границ, такие как электрический забор, утилита glibc memcheck , valgrind и mudflap , могут помочь, если это проблемы с памятью или указателем. Включение флагов компилятора для предупреждений и новых стандартов C может быть полезно -std = c99 -Wall -pedantic
.
Я не могу понять, что вы подразумеваете под
У меня все еще есть та же проблема с вызов функции как раз перед возвращаясь от другого.
Так что я не уверен, что вы ищете. Можете ли вы привести пример тривиального или псевдокода?
Т.е.
#include <stdio.h>
void a(void) {
b();
}
void b(void) {
printf("Hello World\n");
}
int main(int ac, char *av[]) {
a();
return 0;
}
Для справки в будущем: в следующих версиях gcc (4.4.0+) будет поддержка плагинов , специально предназначенных для таких случаев использования, как добавление проходов оптимизации в компилятор без необходимости загружать весь компилятор.
6 мая 2009 г .: GCC теперь можно расширить с помощью общей инфраструктуры подключаемых модулей на хост-платформах, которые поддерживают динамически загружаемые объекты. (см. gcc.gnu.org )