我認爲這個問題的標題是不言自明的,我想將一個由gcc生成的抽象語法樹轉儲到一個.dot文件中(這些文件由Graphviz生成),因爲我想用.png文件或類似文件查看它。有什麼辦法可以做到嗎?如何將由gcc生成的抽象語法樹轉儲爲.dot文件?
感謝提前:)
我認爲這個問題的標題是不言自明的,我想將一個由gcc生成的抽象語法樹轉儲到一個.dot文件中(這些文件由Graphviz生成),因爲我想用.png文件或類似文件查看它。有什麼辦法可以做到嗎?如何將由gcc生成的抽象語法樹轉儲爲.dot文件?
感謝提前:)
有兩種方法,都包括兩個步驟
使用GCC內部VCG支持
編譯代碼(說test.c的) with vcg dumps
gcc -fdump-tree-vcg -g test.c
使用任何第三方工具來獲取點輸出VCG
graph-easy test.c.006t.vcg --as_dot
編譯原料堆放場,然後預處理他們提供一些腳本形成點文件(如在this useful article)
兩種方法都有它們各自的好壞兩方面 - 首先,在gimple翻譯之前,你真的只能得到AST的一個轉儲,bu這很容易。其次,您可以將任何原始轉儲轉換爲點格式,但您必須支持腳本,這是開銷。
什麼是偏好 - 是你自己的選擇。
UPD:時代在變化。 gcc 4.8.2的全新選項可以立即生成點文件。只需提供:
gcc test.c -fdump-tree-all-graph
,併爲你點文件,你會得到一個充足的已經格式化的:
test.c.008t.lower.dot
test.c.012t.cfg.dot
test.c.016t.ssa.dot
... etc ...
請務必使用GCC的新版本使用此選項。
這有幫助:)非常感謝 – asdrubalivan
請更新或檢查您的答案:GCC 4.8.2說'CC1:錯誤:無法識別的命令行選項'-fdump-tree-vcg''。 – Ali
感謝您的通知,更新了答案。較新版本的GCC使事情變得更容易。 –