我想知道使用屬性DW_AT_location進行調試。它是矮人用於調試的屬性之一,但不能真正理解它代表的是什麼。而且當我們編譯代碼時應該何時發出這個屬性。DW_AT_location的使用和含義
0
A
回答
0
從DWARF 3規範(http://dwarfstd.org/doc/Dwarf3.pdf):
2.16數據位置的任何調試信息條目描述的數據對象,其包括變量,參數,共同塊和 類似,可能具有DW_AT_location屬性,其值是位置 說明(請參閱第2.6節)。
DW_AT_location屬性的值是位置表達式。位置表達式相當複雜,我建議您閱讀上面引用的DWARF規範以瞭解更多信息。總而言之,位置表達式可以是一個簡單的地址,包含變量的位置,或者是一個必須在運行時由調試器評估以確定變量位置的小程序。以下是DWARF規範中的一些示例位置表達式:
理想情況下,編譯器應該爲描述其在程序中所有點上的位置的變量發出位置列表。通過寄存器跟蹤變量的位置不是微不足道的,這就是爲什麼一些編譯器在生成調試信息時會禁用優化,比如將變量移入寄存器。
1
請檢查DWARF 3 spec,DATA REPRESENTATION的第7章。例如,如果DW_AT_location的值是0x91 0x68,從第7章的表中我們可以知道0x91表示DWARF調試信息格式是DW_OP_fbreg,而0x68是SLEB128偏移量,我們可以得到它的實際價值:-24。
相關問題
- 1. 含義和JAVA_OPTS
- 2. 「引用」和「解引用」的含義
- 3. 含義和類型定義
- 4. Cocos2d 2.0:CC_ENABLE_GL_STATE_CACHE的含義和用法
- 5. 元標記的含義和用法
- 6. __stdcall的含義和用法是什麼?
- 7. 什麼是「。@ checked」的含義和調用?
- 8. 引用和指針一起的含義?
- 9. PHP代碼的含義和用法
- 10. Nightwatch - WaitForElementVisible和WaitForElementPresent的含義
- 11. refresh_ce的含義和來源
- 12. `::`和`?`在`{:?}中的含義`
- 13. PID,PPID和TGID的含義
- 14. *和的含義。在MySQL
- 15. PropertyAttributes.HasDefault和PropertyBuilder.SetConstant的含義
- 16. SW_SHOW和SW_SHOWNORMAL的含義
- 17. plt.plot [:,0]和[:,1]的含義
- 18. *&和**的含義在C++中
- 19. 宏定義中「...」和「##」的含義
- 20. @SessionScoped的定義和實際含義
- 21. 使用var = {}()的含義的swift語法?
- 22. 什麼是使用$ _POST變量和令牌的含義?
- 23. 數據的使用和含義:{get_param:'value'}在jQuery ajax + JSON
- 24. CakePHP:使用查找和包含的未定義變量
- 25. Biderectional緩存的內存使用含義
- 26. 使用scipy.optimize.basinhopping時'minimization_failures'的含義?
- 27. 網站的含義使用(!preg_match)
- 28. 含義使用額外的循環
- 29. ApplyPropertyChanges不包含使用MVC的定義
- 30. 使用結構類型的含義
這個sleb128偏移究竟是什麼?爲什麼這麼複雜而不是簡單的-24? – stackoverflowwww 2017-01-03 19:02:08