我在使用 GDB 调试 C++ 程序时遇到了一些问题。
当我使用print object.member
时,它并不总是正确打印变量的值。相反,它将一个参数的值打印到我正在调试的函数中。它不会通过函数改变,尽管我改变了object.member
整个的值。
问题是,这个程序相当大,由几个模块组成,有部分专门的模板等,所以我不能在这里全部发布。
现在我尝试创建一个最小的测试用例,但无论我尝试多么简单,我都无法让它工作。我的意思是,不工作。
所以我能问的是,有没有人在 GDB 中看到过这种行为,你有没有发现它是什么原因造成的以及如何解决它?
这里有关于类似行为的问题,但这些问题相当于程序没有正确编译(优化级别太高等)。我用 编译它-Wall -Wextra -pedantic -g -O0
,所以不能这样。
程序运行良好;我可以cout << object.member;
并且输出预期值,所以我不知道现在该尝试什么。