在 gdb 內查詢 macro
需要在編譯時加上 -g3, info macro 等指令才會有用。
參考資料: http://sourceware.org/gdb/onlinedocs/gdb/Macros.html
列出 include 的內容
$ gcc -E a.c
編譯錯誤指出缺少某個 symbol 時, 可用這招確定到底有沒有引入目標的宣告。有時 #ifdef 太多, 看原始碼不易確認這件事。
列出 define 的內容
比方說若想知道 errno 111 代表什麼意思, 可這麼做:$ echo "#include <errno.h>" | gcc -dM -E - | grep " 111$" #define ECONNREFUSED 111再來 man errno 查詢 ECONNREFUSED 即可得到答案。
另外, 可用以下的方法得知系統預先 define 的東西
gcc -dM -E - < /dev/null參考資料: http://stackoverflow.com/questions/2224334/gcc-dump-preprocessor-defines
沒有留言:
張貼留言