api - 什么是 SBLineEntry.GetLine()?
问题描述
SBLineEntry
是 LLDB Python 接口中的代理对象。SBLineEntry.GetColumn()
返回一行中的点,但我不确定它的实际含义。
在 C++ 端源代码中,它解析为LineEntry.column
值,但它也缺乏衡量它的方式。
起初,我认为它是 UTF-8 代码单元偏移量。但这似乎不是因为当我测量它时,它看起来像 UTF-16 代码单元偏移。但我仍然找不到这个值的任何定义。
这个值是多少?
- 源代码文件中的原始字节偏移量?
- UTF-8 代码单元偏移量?
- UTF-16 代码单元偏移量?
- 还有什么?
解决方案
这是个好问题!如果调试信息是 DWARF(Windows 系统除外),则 lldbDNS_LNS_set_column
将 DWARF 行表中的数据作为SBLineEntry::GetColumn()
. DWARF5 规范没有说明这个整数的计数——它只是说,
DW_LNS_set_column 操作码采用单个无符号 LEB128 操作数并将其存储在状态机的列寄存器中。
您可能会看到 clang 将 UTF-16 代码单元偏移量放在 DWARF 中,但标准并不要求这样做。这将是向 DWARF 标准委员会提交的合理澄清请求,http://dwarfstd.org
推荐阅读
- tensorflow - Python 3.6 x64 OpenOPC
- excel - Excel VBA:复制和粘贴 - 正在复制但未粘贴单元格
- html - 用于更改目标部分显示的 CSS
- android-studio - 为不同 ABI 链接共享库的 Android Studio 问题
- groovy - 如何使用 groovy 脚本从 Json 中获取价值
- c# - 如何检查输入的密码是否等于存储的密码?
- excel - 通过从单元格地址标识的特定列范围引用循环的语法?
- c# - 了解 Unity 的 GameObject.Find()、GetComponent() 和对象回收
- c# - Xamarin.Forms 中的 XAML 绑定问题
- android - 现在不推荐使用 Fragment 在 Android API 28 中使用什么