调试捕获此的 lambda

Debug a lambda capturing this

我有一个捕获 this 的 lambda。当我调试它时,我无法看到捕获对象的成员:如果我执行 p *this,LLDB 会打印:

((anonymous class))  = {
  this = 0x17ebb62c
}

显然我的 lambda class 只包含一个成员,即它捕获的 this 指针。似乎是合法的,所以我尝试了 p this->this 然后它报告:

error: expected unqualified-id

我担心 LLDB 会丢失,因为这既是关键字又是我匿名 class 的成员。是这样吗?我该怎么做才能避免这种情况?

假设如下代码:

struct S
{
    auto f() { return [this](){ return ++i; }; }
    int i = 0;
};

我发现有时需要分两步进行:

> break S::f
> continue
...
> print *this
((anonymous class))  = {
  this = 0x17ebb62c
}
> print (S*)0x17ebb62c
S  = {
    i = 0
}