导航
  • 主页
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux
  • 问答

GDB提示没有调试信息如何解决?

sunwhite 公司 CTO  2005-02-24 05:20:43
我是这样使用gcc编译的:
gcc -c -Wall -gstabs -W -Wtraditional -ansi -pedantic -O3
在产生可执行程序后,启动gdb,gdb给出没有调试信息,无法进行调试。
于是我再用:
gcc -c -Wall -ggdb -W -Wtraditional -ansi -pedantic -O3
在产生可执行程序后,同样启动gdb,gdb还是给出没有调试信息,无法进行调试。

请问这个问题该如何解决?请高手帮帮忙!谢谢!
...全文
504 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
up
回复
autoegg 2005-02-28
一是加上-g选项,二是不用-o3,调试时候不用优化,调试后也不要用3级优化,一般2级就可以了。
回复
sharkhuang 2005-02-26
不-g其实也可以调试只是没有行号!文件名等等!
估计是不是-o3优化厉害了。呵呵
回复
sharkhuang 2005-02-26
-g
回复
seedundersnow 2005-02-26
learning...
回复
cnepine 2005-02-26
GCC编译的时候你要加上-g 选项生成供GDB调试使用的相关信息。

回复
lu-ping 2005-02-25
在源文件目录执行gdb的话或者在如果调用编译命令的目录就是源目录的话,你的所有源码不需要关联。如果不在源目录下,使用gdb>dir <源码目录>
来关联源码。具体几个文件你不用管,设断点有可以用:
gdb>break <源文件名文件名>:行号

gdb>break [类名::]函数名称 注:break <行号> 运行时会定位到包含main的程序文件中的行号。
都会自动定位到你指定的源码行。
gdb>list显示当前堆栈框的+5 -- -5行源码。
设置好断点后,
gdb>run 运行你的程序
回复
gettext 2005-02-25
-ggdb应该就可以。-O3也只会影响一点点运行时的gdb调试与source关联的信息。
如果说是没有调试信息那是比较奇怪的。不知道是不是搂主操作有误。错误信息是什么?
还有是pc平台上吗?
回复
sunwhite 2005-02-25
我是在PC+winxp+cgywin上编译调试的。
我去掉了-O3选项后,编译成功,然后输入gdb test.exe,gdb运行起来,只能输入run运行程序,无法单部运行或者设置断点,我实在比较菜,不知道如何把可执行程序和源代码建立关联?有没有高手帮助一下。
另外说一下,连接出来的test.exe是通过Makefile进行的,有5个源文件一起编译出的可执行程序。
回复
city_goal 2005-02-24
GCC编译的时候你要加上-g 选项生成供GDB调试使用的相关信息才能使用GDB调试
ie, gcc -g -o exp exp.c
gdb exp
回复
CoolQ 2005-02-24
建议调试的时候不要用-O3选项,另外,给出GDB的出错信息
回复
发动态
发帖子
Linux/Unix社区
创建于2007-08-27

2.0w+

社区成员

Linux/Unix社区 应用程序开发区
申请成为版主
社区公告
暂无公告