【问题标题】:Debug a lambda capturing this调试捕获这个的 lambda
【发布时间】:2019-01-26 10:29:09
【问题描述】:

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

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

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

error: expected unqualified-id

我担心 LLDB 会丢失,因为它既是关键字又是我的匿名类的成员。是这样吗?我能做些什么来规避这种情况?

【问题讨论】:

  • 能否粘贴一些您正在尝试的代码?
  • 全部等于:[this]() { // code I am trying to debug });
  • 对不起,很难说这个小信息是怎么回事,试着详细说明你的问题,例如p等是什么
  • 这就是minimal reproducible example 会有帮助的地方。
  • 我不想粗鲁,谢谢你看我的问题,但我的问题是关于 lldb,我需要有实际知识的人

标签: c++ c++11 lldb


【解决方案1】:

假设如下代码:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多