【问题标题】:lldb complains about variable named "this"lldb 抱怨名为“this”的变量
【发布时间】:2019-12-07 16:47:56
【问题描述】:

我正在使用 Xcode/lldb 调试一些 C 代码。但是我得到了这个错误

(lldb) p (int)g_list_position(start, next)
(int) $0 = 1
(lldb) p (int)g_list_position(start, this)
error: expected unqualified-id
error: invalid use of 'this' outside of a non-static member function

所以显然 lldb 的东西“this”是对一个类的引用,尽管它在 C 中是一个完全有效的 var(它的值应该是 0)。有什么办法可以在 lldb 中转义这个名字吗?

【问题讨论】:

    标签: xcode lldb


    【解决方案1】:

    不,lldb 中的表达式评估器用一些 C++ 包装您的表达式(在源代码级别)以传递参数。我能想到的唯一建议是在 this 指针中获取地址并将其放入在表达式中明确。这是表达式评估的目标,您可以在程序中复制一行源代码并将其作为 lldb 中的表达式执行。但这是一个不起作用的极端情况 - C 中的变量是 C++ 中的保留字。

    【讨论】:

    • 有趣...好吧,这没什么大不了的,但我想我会问的。具有讽刺意味的是,在左侧的窗格中,它列出了我可以看到的变量,它理解“这个”就好了。
    • 是的,这不经过表达式评估(它不经过编译器),这是一个简单的变量查找。我怀疑p this 会失败。 v this(又名frame variable this)将成功,因为框架变量正在对当前范围内具有该名称的变量进行简单搜索。这与 Xcode 用于填充 Locals 窗口的机制相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    相关资源
    最近更新 更多