天天看點

《深入分析GCC 》——2.5 GCC調試選項

本節書摘來自華章出版社《深入分析gcc 》一書中的第2章,第2.5節,作者 王亞剛 ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

gcc本身對包含了衆多的調試選項,既可以為使用者程式生成調試資訊,也可以将gcc運作過程中的關鍵資訊儲存在檔案或輸出在終端上,常用的調試選項如表2-2所示。如果需要了解gcc在處理的各個階段裡中間表示的具體内容,或者需要了解gcc中某個處理過程對于中間表示的處理細節時,就可以使用表2-2中給出的各種gcc調試選項,輸出gcc運作過程中所生成的中間表示的調試資訊和處理過程細節,并結合gcc的代碼,進而了解gcc的具體工作細節。

《深入分析GCC 》——2.5 GCC調試選項

假設有如下的源代碼:

為了了解gcc對該檔案編譯過程中的主要處理過程,可以使用如下指令輸出gcc處理過程的主要調試資訊和工作流程。

可以看出,此時輸出的各種調試檔案名稱格式為:test.c.nnn[r/t].name,其中nnn為一個編号,t表示該處理過程是基于tree的gimple處理過程,r表示該處理過程是基于rtl的處理過程。如果讀者關注函數控制流圖(cfg,control f?low graph)的資訊,那麼可以打開test.c.013t.cfg檔案,檢視其中的具體内容。内容如下:

其中就包含了例子中給出函數的控制流圖,如果想了解更詳細的cfg資訊,也可以使用如下的編譯形式:

可以看出,gcc編譯時會生成更加詳細的cfg資訊。

讀者也可以根據自己的需要,合理地使用表2-2中的調試選項,輸出gcc編譯過程中感興趣的調試資訊,進而分析gcc的工作細節。

繼續閱讀