我需要在調試器下運行時禁用一些代碼。
所以,我只是想象,這樣做:
{$IFNDEF DEBUG}
...
{$ENDIF}
然而,IFNDEF內的代碼在調試器中執行,馬金會崩潰。
我拉撒路0.9.29 & FPC 2.4.0
我需要在調試器下運行時禁用一些代碼。
所以,我只是想象,這樣做:
{$IFNDEF DEBUG}
...
{$ENDIF}
然而,IFNDEF內的代碼在調試器中執行,馬金會崩潰。
我拉撒路0.9.29 & FPC 2.4.0
你提到實際上是編譯器指令:編譯器指令,不進行調試指令。
它們與編譯過程有關,與調試系統完全分離。
你所要做的是:
您正在編譯和調試混淆,並將它們放在相同的上下文中。
它們實際上駐留在完全不同的上下文中。
這可能是由於你在相同的GUI系統下編譯和調試的事實,但是如果你編譯一個程序,那麼調試器查找的唯一東西就是斷點。
希望它有幫助。
編輯:您可以通過一個簡單的{$ DEFINE DEBUG}在程序/股的頂部定義它的地方,或使用拉撒路選項面板將其添加爲一個命令行PARAM。
完成我的答案。
{$IFOPT D-}
//code
{$ENDIF}
if $ DEBUGINFO is on that is run with debugger!
嗨VDPasha,歡迎來到stackoverflow。你能詳細描述一下代碼將如何「在lazarus/osx項目中使{$ IFNDEF DEBUG}工作」或爲什麼ifopt中的代碼不會像'ifndef'(從問題中)那樣崩潰調試器?有什麼不同? – Armfoot 2015-06-02 13:33:26
選項D +/-顯示啓用了調試器信息[Debugger_Setup](http://wiki.lazarus.freepascal.org/Debugger_Setup)意味着應用程序以調試模式構建。 – VDPasha 2015-06-03 11:45:49
{$ IFOPT D +} {$ DEFINE DEBUG} {$ ENDIF} :) – VDPasha 2015-06-03 11:56:40
所以,問題是這個符號不是由拉撒路定義的...我可以在哪裏定義它? – mamcx 2010-11-03 20:46:07
您可以通過簡單的{$ DEFINE DEBUG}在程序/單元頂部的某處定義它,或者使用Lazarus Options窗格將其添加爲命令行參數。 – 2010-11-03 20:50:25
那麼這個評論就是答案。謝謝。 – mamcx 2010-11-08 17:56:54