我想知道使用属性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