3
A
回答
6
您可以使用nm
從您的目標文件中提取此類信息。
nm *.o | grep OBJT | grep GLOB
EDIT 上述命令是Solaris的納米(SUNWbtool封裝)。對於便攜性,nm
有一個參數來選擇輸出格式:
nm -f [posix|bsd|sysv] *.o
0
爲什麼你需要知道這個?出於很多目的,靜態數據(無論是在文件還是函數範圍)都應該與全局數據分組。
通常,全局變量顯示爲數據,而不是鏈接器映射中的代碼。堆棧變量和堆分配變量不。 (當然,指向堆分配的數據可以是全局的;這只是指針與其指向的C之間的常規區別。)
1
用於輸出存儲器映射的選項是-M和鏈接器,所以要從海灣合作委員會得到它,你必須使用gcc .... -Xlinker -M
。
獲得這些的另一種方法是使用ctags
程序。它不僅可以標記可用的函數,還可以標記可用的全局變量(並且不收集靜態信息,這與存儲器映射不同)。因爲它不編譯所有東西,所以這應該比gcc方法更快(如果你必須編譯,你當然可以免費獲得)。
0
如果你有dwarfdump
和二進制文件包含DWARF調試信息(未剝離),您可以通過運行
.debug_pubnames
矮一節的內容
dwarfdump -p mybinary | awk '{print $2}'
它將生成一組帶有全局符號名稱的行,每行一個。
0
我喜歡gdb的「信息變量」來做到這一點。
相關問題
- 1. c目標c中的全局變量
- 2. 全局變量目標C
- 3. c庫中的全局變量
- 4. C#中的全局變量替代?
- 5. 現代C++中的全局變量
- 6. 目標C中的全局變量
- 7. Global.asax中,全局變量,並用代碼
- 8. C#中的全局變量
- 9. C++中的全局變量
- 10. C中的全局變量#
- 11. c中的全局變量
- 12. C#中的全局變量或等效代碼
- 13. C++全局變量
- 14. 全局變量,C
- 15. C#全局變量
- 16. C++:全局變量
- 17. 全局變量代碼混淆
- 18. 全局變量的替代
- 19. 在VB.NET中識別全局變量
- 20. iPhone:目標C全局變量
- 21. 如何在c#代碼中觀察變量(全局變量和局部變量)的值嵌入?
- 22. dlopen和C/C++中的全局變量
- 23. 在目標中全局變量實例變量c
- 24. 如何刪除代碼中的全局可變變量?
- 25. Python:代替全局變量
- 26. 全局變量替代
- 27. Python替代全局變量
- 28. 替代全局變量?
- 29. Ruby全局變量替代
- 30. 使用全局變量將全局變量遞歸到迭代
值OBJT和GLOB當我跑它,但各個按字母順序的標識符被用於替代對在與「納米」輸出生成。 'nm'是一個GNU開發工具,如果你想知道。在你的linux開發盒上試試man nm。 – 2009-01-12 11:34:54