单步执行静态方法时,gdb不显示''this''?

The*_*eer 0 c++ debugging gdb debug-symbols

我有以下情况.这是该课程的精简版.我在Qt创建者中运行它并在真实场景中使用Qt.

class MyClass
    {
    public:
         MyClass();
         static MyClass *instance;
         static void myMethod(int a, int b);
         int name;
    };

    MyClass  *MyClass::instance = 0;

    MyClass::MyClass(){
    if (instance)
        exit(-1);
    instance = this;
    }

void MyClass::myMethod(int a, int b){
        if(instance->name == a) qDebug() << "hello";
    }

int main(int argc, char *argv[])
{
    MyClass cls;
    cls.myMethod(1,2);
}
Run Code Online (Sandbox Code Playgroud)

我试图通过调试myMethod器进入调试.当我输入方法时,只有a 1b 2在手表中可见,并且没有参考thisinstance.

更新 答案说明静态方法没有绑定到对象,这就是没有this可用的原因.

在这个实现中,instance一旦我进入,静态方法访问调试器中我想要提供的内容myMethod.

我如何使其可用/可见?

hiv*_*ert 6

实际上在没有对象的情况下调用静态方法 电话

MyClass cls;
cls.myMethod(1,2)
Run Code Online (Sandbox Code Playgroud)

相当于

MyClass::myMethod(1, 1)
Run Code Online (Sandbox Code Playgroud)

结果myMethod是没有收到任何this价值.