gdb的print打印的变量数值不正确是什么情况?

zhh157 2014-02-14 05:16:42
先贴下我的makefile


BIN = XXX
CC = g++
FLAGS = -rdynamic --std=c++0x -gstabs+
CCOPT = $(FLAGS)
CPPFLAGS = -Wall $(FLAGS) $(TARGET_INC) $(TEST_INC)

...

# build excutable
$(BIN) : $(TEST_OBJ)
$(CC) $(CCOPT) -o $@ $(TEST_OBJ) $(TARGET_OBJS) $(LIB) $(LIB_PATH)

# generate object file
$(TEST_OBJ) : %.o : %.cpp
$(CC) -c $(CPPFLAGS) $< -o $@



问题现象:
1) gdb中可以单步跟踪,list可以显示代码,说明debug信息是有编译进去。
2) 设置断点后,使用"print xxx"查看变量,变量值不正确,但是在程序中打印是OK的。
3) -g和-gstabs+都不行。
4) 尝试测试一个简单的例子,调试正常,无此现象。
5) 调试过程中没有出现gdb内部的警告/错误提示。

哪位帮忙分析一下,可能是什么原因导致?



...全文
479 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
loser_jyh 2014-12-21
  • 打赏
  • 举报
回复
多谢。。我也遇到这个问题。可是我的Ubuntu明明是32位的呀。怎么就成了64位程序呢?从哪里可以看我的程序是32还是64呢?
zhh157 2014-03-05
  • 打赏
  • 举报
回复
最近刚刚把这个该死的问题解决了,给大家通告下: 解决方法:使用-gdwarf-2选项。 问题的根因不是非常清楚,但基本上确定是64位程序需要使用对应的debugging格式。 没有时间具体研究,有兴趣的同学可以挖掘下,给大家普及下,此贴暂时不结。 附:debugging格式官方解释 http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
赵4老师 2014-02-15
  • 打赏
  • 举报
回复
看变量值还是在程序中自己print最靠谱。
mujiok2003 2014-02-14
  • 打赏
  • 举报
回复
引用 3 楼 zhh157 的回复:
[quote=引用 1 楼 mujiok2003 的回复:] 是不是被优化了?
仔细查看了编译选项,没有使用-O[/quote] 那就反汇编吧。
zhh157 2014-02-14
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
是不是被优化了?
仔细查看了编译选项,没有使用-O
mujiok2003 2014-02-14
  • 打赏
  • 举报
回复
一般-g就可以了。
mujiok2003 2014-02-14
  • 打赏
  • 举报
回复
是不是被优化了?

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧