【问题标题】:chromium lldb debug not show string铬 lldb 调试不显示字符串
【发布时间】:2017-12-05 08:23:04
【问题描述】:

我正在 xcode 中调试 chromium,
并在 ~/.lldinit 文件中配置../chromium/src/third_party/WebKit/Tool/lldb/lldb_webkit.py
但它不能正确显示字符串,它只显示字符串的长度,不能显示内容,
所以调试不方便,我看不到字符串的内容,这个问题如图所示。

in the picture1, picture2

希望内容不为空,并且显示字符串内容正确,或者有什么好的方法可以正确显示字符串内容

【问题讨论】:

标签: chromium lldb


【解决方案1】:

摘要格式化程序代码对我来说看起来不正确。确实如此:

def WTFStringImpl_SummaryProvider(valobj, dict):
    provider = WTFStringImplProvider(valobj, dict)
    return "{ length = %d, is8bit = %d, contents = '%s' }" % (provider.get_length(), provider.is_8bit(), provider.to_string())

WTFStringImplProvider.is8_bit 在哪里:

def is_8bit(self):
    return self.valobj.GetChildMemberWithName('is8_bit_')

返回的是一个 SBValue,而不是一个整数,所以用 %d 格式打印它似乎不是正确的做法。

【讨论】:

  • 这可能不是主要问题,我把代码改成bool(self.valobj.GetChildMemberWithName('is8_bit_').GetValue‌​AsUnsigned(0)),它也无法显示字符串内容,可能是对象没有成员m_data8m_data16
  • 在本地视图中关闭 WTFTomicString 实体应该会告诉您这一点。 lldb_webkit.py 中的数据格式化程序只有摘要格式化程序,因此它们不会更改本地视图(或exprframe var 的结果中的成员显示。您也可以将--raw 传递给这些命令以确保您看到的原始数据布局没有任何格式化程序。
【解决方案2】:

我创建了这个问题 (https://bugs.chromium.org/p/chromium/issues/detail?id=1004272) 以确认这是一个错误,并已打开此代码审查以尝试修复它:https://chromium-review.googlesource.com/c/chromium/src/+/1810444

这个补丁在我的本地环境下有效,你可以试试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2017-01-08
    • 2013-12-24
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多