什么是SBLineEntry.GetLine()?

问题描述 投票:0回答:2

SBLineEntry是LLDB Python接口中的代理对象。 SBLineEntry.GetColumn()返回一行中的点,但我不确定它的实际含义。

在C ++端源中,它解析为LineEntry.column值,但它也缺乏度量方式。

起初,我认为它是UTF-8代码单元的偏移量。但这似乎不是因为我测量时看起来像UTF-16代码单元偏移量。但是我仍然找不到该值的任何定义。

这是什么值?

  • 源代码文件中的原始字节偏移量?
  • UTF-8代码单元偏移量?
  • UTF-16代码单元偏移量?
  • 还有什么?
api lldb sblineentry
2个回答
1
投票

这是一个很好的问题!如果调试信息是DWARF(Windows系统除外),则lldb从DWARF线表中提供LineEntry.column数据作为DNS_LNS_set_column返回的数字。 DWARF5规范未说明此整数在计数什么,仅说明了

DW_LNS_set_column操作码采用单个无符号的LEB128操作数并将其存储在状态机的列寄存器中。

您可能会看到clang在DWARF中放置了UTF-16代码单元偏移量,但是该标准不需要这样做。这是向DWARF标准委员会提交的合理澄清请求,SBLineEntry::GetColumn()


0
投票

对于Rust程序,我认为这是Unicode标量值偏移量。

他们在重复单词“ char”,在Rust中是lookup_char_pos

© www.soinside.com 2019 - 2024. All rights reserved.