2010-03-30 117 views
-1

我們最近下載,安裝並編譯了gcc-3.0.4代碼。 gcc編譯器已經成功構建,我們可以編譯一些相同的測試cpp文件。我想知道,這樣我們增加額外的運行時間調試語句就像我的GCC編譯執行二進制應打印下面的語句在日誌文件中,我們可以如何修改gcc的源代碼:運行時調試

filename.cpp :: FunctionName#linenumber-statement

或我可以通過此定製編譯器代碼插入的任何其他信息。

+3

GCC 3.0是一個非常舊的版本,3.x系列在很多方面都很差。你爲什麼不使用更新的東西?另外,如果使用-g標誌,編譯器已經插入了這類調試信息。 – 2010-03-30 10:12:20

+1

@尼爾,我同意,但「很老」幾乎是輕描淡寫。根據http://gcc.gnu.org/news.html,3.0.4於2002年2月發佈。這不僅僅是古老的,古老的。 – Glen 2010-03-30 10:44:03

+0

@Glen我仍然使用Win2K,所以把它稱爲古代會有點虛僞:-) – 2010-03-30 10:45:31

回答

2

你看過宏__FILE____LINE__?他們爲你做這些而不修改編譯器。有關更多信息,請參閱here。我對GCC體系結構的一般理解是,它分爲前端(解析器),中間(在特殊中間語言中進行優化)和後端(生成平臺相關輸出)。所以,爲了您的目的,您必須查看後端部分。

+0

我想要鍛鍊我們如何修改gcc代碼以符合我們的要求。插入宏將是痛苦的,因爲我們有數百個文件。我們如何修改gcc源代碼,以便gcc編譯器將一些額外的數據注入到二進制文件中,這些二進制文件可以在執行時收集。 – Prakash 2010-03-30 11:07:23

+0

在您的評論後添加了更多信息。我對此不太瞭解,但希望它能給你一個出發點。 – 2010-03-30 11:30:13

+0

是否有任何書籍描述我們如何編寫gcc和可用功能,如gcov build – Prakash 2010-03-30 11:45:12

0

不要使用像GCC 3.0這樣的古老編譯器。

使用最近的GCC 4.9(2014年末或2015年1月),您可以自定義編譯器,例如,與MELT擴展,這將增加一個新的優化通工作。該通道會在每個Gimple調用語句之前插入一個Gimple語句(希望調用某個調試打印)。

這是一項不平凡的工作(也許是幾周的工作)。你需要了解所有的Gimple