編譯器
以偵錯器檢視施加了最佳化而編譯的程式時,有時部分變數的值會顯示為「無法顯示」。主要原因為何?
- A因為施加最佳化後,偵錯器完全無法載入程式
- B因為變數的值每次編譯都會隨機改變
- C因為值已因暫存器的重複使用或計算的刪除而不復存在
查看答案與解析
正確答案:C. 因為值已因暫存器的重複使用或計算的刪除而不復存在
在最佳化中,變數不放在記憶體,只用暫存器處理,用完後該暫存器就被重複用於其他的值。也有計算本身因常數傳播而消失的情況。因此,在偵錯器中停下的時間點,該變數的值有可能已不存在於任何地方,而顯示「已被最佳化刪除」等訊息。偵錯時,一般會減弱最佳化,或使用適合偵錯的最佳化設定。並不是偵錯器無法載入。
- A. 偵錯器也能載入已最佳化的程式。
- B. 值並不會隨機改變。
- C. 正確。因為暫存器的重複使用或計算的刪除,值已不存在。