GDB跳过我的代码!

时间:2010-04-05 14:58:06

标签: c++ gdb

所以,我已经定义了一个像

这样的类
DataLoggingSystemStateReceiver
{
DataLoggingSystemStateReceiver()
:   // initializer list
{
    // stuff
}

//  ... other functions here

};

在main中,我像这样实例化DataLoggingSystemStateReceiver:

int main()
{
    // ... run stuff
    Sensor sensor(port, timer);

    DataLoggingSystemStateReceiver dlss();

    Log::notice("started");
    return 0;
}

但是,当我在gdb中单步执行此代码时,它会运行:

Sensor sensor(port, timer);

跳过

DataLoggingSystemStateReceiver dlss();

并继续

Log::notice("started");

是什么给出了?


编辑:通过更改

DataLoggingSystemStateReceiver dlss();

DataLoggingSystemStateReceiver dlss;

在main()中,该行执行。有人可以解释原因吗?

1 个答案:

答案 0 :(得分:9)

此:

DataLoggingSystemStateReceiver dlss();

不声明自动变量。它声明了一个名为dlss的函数,该函数不带参数并返回DataLoggingSystemStateReceiver

你想:

DataLoggingSystemStateReceiver dlss;

该对象将被默认初始化,因此对于您的类类型,将调用默认构造函数。