[英]Why GCC still optimized something while set to O0?
在調試Redis時,我使用make noopt
編譯了代碼,在Makefile中,優化設置為O0
。 調試時,我仍然進行了一些優化:
在第1行中,我們可以看到aeDeleteFileEvent
所有參數,但是當我進入aeApiDelEvent
(第2行)時,其所有參數都是<optimized out>
。
為什么這些要打架?
在第3行中,另一個問題是我列出了所有斷點。 事實上,第三斷點aeApiDelEvent
我在調試文件(x.gdb)已成立,但為什么它改成aeDeleteFileEvent
?
好的,謝謝@alk(事實是GCC優化了它)和@markys( V=1
對我有用)。
我在Redis的Makefile中發現了一個棘手的問題(可能是Bug,因為它使make noopt
對調試沒有影響),其中有一條規則將包含.make-settings
,並且在文件中,選項之一是設置O2
優化。
在注釋Makefile中的行之后,現在沒有優化出現在GDB中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.