簡體   English   中英

使用clang編譯程序時,可以在gdb中擴展C宏嗎?

[英]Can C macros be expanded in gdb when the program was compiled using clang?

我有一個宏,它獲取整數的第 J 位:

#define TWO_TO_THE(POWER) (1 << POWER)

#define JTH_BIT(BITS, J)  ((TWO_TO_THE((J-1)) & BITS) != 0)

但是,我不能通過發出命令print JTH_BIT(i,j)從 gdb 使用它,甚至可以在調試時使用 C 中的宏嗎?

宏由預處理器處理。 編譯器甚至不知道它們。

但是,如果幸運的話,GCC 的選項-g3可以完成這項工作並生成允許gdb擴展宏的代碼。

gdb 文檔(我強調):

-glevel

[...] 級別 3 包括額外信息,例如程序中存在的所有宏定義。 當您使用 -g3 時,某些調試器支持宏擴展。

如果您使用正確的選項編譯程序,它應該可以工作。 在gcc中,編譯時需要說“-g3”

請參閱此處此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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