gdb 并未显示 KDevelop 中的所有变量

gdb 并未显示 KDevelop 中的所有变量

希望这张图片比我能更好地描述这个问题。

一般来说,我正在调试多线程应用程序凯开发数据库

我正在逐步调试应用程序(F11 快捷键)并且已经通过了变量的初始化响应

屏幕左侧是我能看到的所有变量的列表。

我在用着-G选项克++,但我怀疑我错过了一些其他选项。

从我的 makefile 中:

g++ -std=c++11 -g -ggdb -O example.cpp -I../libs -I$(BOOST_INCLUDES) -L$(BOOST_LIBS) -pthread -lboost_thread -lboost_system  -o example 

所以,基本上,构建应用程序没有任何问题。它也运行得很好。有谁知道为什么调试器中没有显示所有变量?

在此输入图像描述

答案1

海湾合作委员会文档解释一下:

GCC 允许您-g使用-O.优化代码所采用的快捷方式有时可能会产生令人惊讶的结果:您声明的某些变量可能根本不存在;控制流程可能会短暂地移动到您意想不到的地方;有些语句可能不会被执行,因为它们计算恒定的结果或者它们的值已经在手边;某些语句可能会在不同的位置执行,因为它们已移出循环。

在您的情况下,调试时看不到的变量可能已被优化掉。

要调试您的程序,您应该使用-Og而不是-O在你的g++命令行中。这使得优化不会对调试产生任何影响。

相关内容