C++ GDB跳过了我的代码!

C++ GDB跳过了我的代码!,c++,gdb,C++,Gdb,我定义了一个类,比如 DataLoggingSystemStateReceiver { DataLoggingSystemStateReceiver() : // initializer list { // stuff } // ... other functions here }; 大体上,我实例化DataLoggingSystemStateReceiver如下: int main() { // ... run stuff Sensor sensor(por

我定义了一个类,比如

DataLoggingSystemStateReceiver
{
DataLoggingSystemStateReceiver()
:   // initializer list
{
    // stuff
}

//  ... other functions here

};
大体上,我实例化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();

在main()中,执行该行。有人能解释一下原因吗?

这是:

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

你想要:

DataLoggingSystemStateReceiver dlss;

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

只是为了确定:您是否使用
-g
编译代码?发生这种行为是因为对象的默认构造函数不带参数吗?@sheep:否。这只是语法的一个缺点,称为“最烦人的解析”。编译器只是将其作为函数声明来读取,它与您的类无关。很酷。感谢您的解释!
DataLoggingSystemStateReceiver dlss;