c++ - GDB 跳过了我的代码!

标签 c++ gdb

所以,我定义了一个类

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();

DataLoggingSystemStateReceiver dlss;

在 main() 中,该行执行。谁能解释一下为什么?

最佳答案

这个:

DataLoggingSystemStateReceiver dlss();

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

你想要:

DataLoggingSystemStateReceiver dlss;

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

关于c++ - GDB 跳过了我的代码!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2579020/

相关文章:

c++ - 在初始化列表中调用私有(private)函数的情况下,它是未定义的行为吗?

linux - 这个警告是什么意思?

c++ - std::string::size() const () 中的段错误?

c - 临时 C 字符串具有相同的地址

c++ - 在 GDB pretty-print 中显示特定的 std::vector 元素

c++ - C++与QML之间的通信

c++ - 同时打开 TCP

条件数据观察点在 ARM GDB 中不起作用

c++ - 为什么通用引用作为输入参数不起作用

c++ - 从包含十六进制数的 std::string 或 QString 创建 std::bitset 或 QBitArray