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

sunwhite 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还是给出没有调试信息,无法进行调试。

请问这个问题该如何解决?请高手帮帮忙!谢谢!
...全文
1086 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveCreatesBeauty 2005-03-08
  • 打赏
  • 举报
回复
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调试使用的相关信息。

DanXer 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的出错信息

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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