SBLineEntry
是LLDB Python接口中的代理对象。 SBLineEntry.GetColumn()
返回一行中的点,但我不确定它的实际含义。
在C ++端源中,它解析为LineEntry.column
值,但它也缺乏度量方式。
起初,我认为它是UTF-8代码单元的偏移量。但这似乎不是因为我测量时看起来像UTF-16代码单元偏移量。但是我仍然找不到该值的任何定义。
这是什么值?
这是一个很好的问题!如果调试信息是DWARF(Windows系统除外),则lldb从DWARF线表中提供LineEntry.column
数据作为DNS_LNS_set_column
返回的数字。 DWARF5规范未说明此整数在计数什么,仅说明了
DW_LNS_set_column操作码采用单个无符号的LEB128操作数并将其存储在状态机的列寄存器中。
您可能会看到clang在DWARF中放置了UTF-16代码单元偏移量,但是该标准不需要这样做。这是向DWARF标准委员会提交的合理澄清请求,SBLineEntry::GetColumn()
对于Rust程序,我认为这是Unicode标量值偏移量。
这里是http://dwarfstd.org关于列号。它说an open issue函数产生列号。
span_start
span_start
他们在重复单词“ char”,在Rust中是lookup_char_pos
。