调试捕获此的 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
}
我有一个捕获 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
}