在使用Progress 4GL時,您會如何防止大量調試代碼意外泄漏到生產環境中?使用Progress 4GL防止調試代碼投入生產?
回答
一個解決方案是基於發展環境具有獨特的PROPATH項,是不是在其他enviroments可用的假設當移到代碼重新編譯:
&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/}
與我關於斷言的其他答案類似,您可以設置一個包含調試標誌的生產站點上將爲空的include。在開發網站上,您只需定義值,以便您的調試代碼包含在程序中。
通過將代碼包裝在預處理器中,編譯器將其編譯到生產站點時將完全省略調試代碼。
&如果定義(debugalert)<> 0 &然後
& ENDIF
你會再使用「&全球定義調試」中要包含調試代碼的代碼的版本。不定義「調試」應該會導致編譯器忽略代碼。
/* debug.i省略對生產的以下*/
& GLOBAL-DEFINE DEBUGALERT
/* test.p */{ } debug.i
DEF VAR h_ct AS INT NO-UNDO
DO h_ct = 1 TO 10:
&如果定義(DEBUGALERT)<> 0 THEN &
MESSAGE "debug message" h_ct.
<debug code goes here>
& ENDIF
END。
如果你的測試數據庫和生產數據庫有不同的名稱,你可以使用此代碼:
IF DBNNAME = "TESTDB" THEN
DO:
<DEBUG CODE>
END.
我通常只發佈一個特別的活動 - 調試消息。在我的開發環境中,應用程序中有一個菜單項,它將啓動一個窗口,該窗口可隨時隨地調試消息並顯示生成的任何消息。所以我可以將調試消息插入我的代碼,然後打開窗口,如果我想看到消息。如果我忘記整理調試代碼,那麼活的用戶看不到任何消息,儘管我仍然可以打開調試窗口來查看發生了什麼。
(這樣做的WEBSPEED版本將只寫輸出到OS文件)
戈登,聽起來像一個非常整齊的想法登錄需求,謝謝! – 2009-06-12 12:22:40
- 1. Progress 4GL代碼分析工具
- 2. 防止在產生的SQL代碼
- 3. PROGRESS 4GL凍結
- 4. Progress 4GL和.Net
- 5. 如何通過ASCII控制代碼與Progress 4GL分割輸入?
- 6. 如何使用Progress 4GL使用FTP?
- 7. Dynamic Field Validation Progress-4GL
- 8. 防止使用.NET代碼產生進程
- 9. Progress-4GL寫入日誌文件
- 10. 如何使用Progress 4GL測試字符串是否數字
- 11. 單元測試,以防止生產
- 12. 防止拖拉和投入
- 13. 如何防止XCode調試器停止對象代碼?
- 14. 如何處理不應該投入生產的代碼?
- 15. 低效代碼:防止產生重複的隨機數
- 16. 使用Grunt Compass任務生成沒有調試信息的生產CSS代碼
- 17. AppLinks在投入生產後停止啓動應用
- 18. 防止EF代碼首先重新生成我的生產數據庫
- 19. 導軌資產未投入生產
- 20. Rails資產投入使用
- 21. 防止日食在調試時轉移到代碼行
- 22. 防止VS代碼從輸入
- 23. 調試:使用生成的Java代碼而不是Xtend代碼
- 24. 防止進入靜態庫代碼
- 25. Javascript/jquery防止注入執行代碼
- 26. 防止圖片上傳代碼注入
- 27. 防止在代碼中使用system.reflection
- 28. 在調查中防止多次投票
- 29. 防止nodejs在開發/調試時縮小javascript代碼
- 30. 生產Django應用程序投擲/不投擲500錯誤基於調試=值
DuStorm,謝謝,很好的解決方案但它需要一個額外的包含文件。 – 2009-05-07 14:00:17