簡體   English   中英

為什么將GCC設置為O0時仍會進行優化?

[英]Why GCC still optimized something while set to O0?

在調試Redis時,我使用make noopt編譯了代碼,在Makefile中,優化設置為O0 調試時,我仍然進行了一些優化:

GDB屏幕截圖

在第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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM