2009-05-01 5 views

ответ

0

Решение основывается на предположении, что окружающая среда разработки имеет уникальный вход PROPATH, который не доступен в других окружающих средах и код компилируется при перемещении через:

&IF DEFINED(DEBUGGING) = 0 &THEN 
    &IF PROPATH MATCHES '*development*' &THEN 
     &GLOBAL-DEFINE DEBUGGING TRUE 
    &ELSE 
     &GLOBAL-DEFINE DEBUGGING FALSE 
     &MESSAGE Remove debugging: search for DEBUG within the code. 
    &ENDIF   
&ENDIF         

&IF DEFINED(DEBUGGING_STARTED) = 0 &THEN 
    &GLOBAL-DEFINE DEBUGGING_STARTED TRUE 
    IF {&DEBUGGING} THEN 
    DO: 
&ELSE 
    END. 
    &UNDEFINE DEBUGGING_STARTED 
&ENDIF 

Использование

Сохранить файл как «отладки» (без расширения) в каталог, на который указывает PROPATH, то:

{debug} 

/* some debugging code here */ 

{debug/} 
1

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

Посредством обертывания кода в препроцессоре компилятор полностью исключает код отладки при компиляции его на производственный сайт.

& если определено (debugalert) <> 0 & затем
& ENDIF

Вы бы затем использовать «& глобального определения отладки» в версиях кода, который вы хотите содержать код отладки. Не указывая «debug», вы должны заставить компилятор опустить код.


/* debug.i опустить следующее на производство */

& ГЛОБАЛЬНОЙ-ОПРЕДЕЛИТЬ DEBUGALERT


/* test.p */ {debug.i}

DEF VAR h_ct AS INT NO-UNDO

DO h_ct = 1 до 10:

& IF DEFINED (DEBUGALERT) <> 0 & ТОГДА

 MESSAGE "debug message" h_ct. 
    <debug code goes here> 

& ENDIF

END.

+0

DuStorm, спасибо, большое решение, однако это требует дополнительного включения файла. –

2

Если базы данных базы данных и производственных испытаний имеют разные имена, вы можете использовать этот код:

IF DBNNAME = "TESTDB" THEN 
DO: 
    <DEBUG CODE> 
END. 
5

Я обычно просто опубликовать специальное событие - отладочный-сообщение. В моей среде Dev есть пункт меню в приложении, в котором будет запускаться окно, которое в любом случае должно быть отправлено на отладочное сообщение и отображает все созданные сообщения. Поэтому я могу вставлять debug-сообщения в свой код, а затем открывать окно, если хочу видеть сообщения.Если я забуду убрать код отладки, тогда живые пользователи не видят никаких сообщений, хотя я все еще могу открыть окно отладки, чтобы узнать, что происходит.

(версия WebSpeed ​​это будет просто записать вывод в файл ОС)

+0

Гордон, звучит как очень аккуратная идея для регистрации по требованию, спасибо! –

+0

Мне это нравится, потому что у вас может быть несколько слушателей, одна из которых может быть функцией регистрации – nwahmaet

 Смежные вопросы

  • Нет связанных вопросов^_^