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;