C ++:没有断点可行

时间:2014-07-03 02:53:49

标签: c++ debugging gcc gdb

这可能是一个非常基本的问题。但是,我无法通过搜索网络找到任何答案。

我有一个我需要用C ++编写的调试代码。对于此代码,我要求在兼容性原因中使用GCC 4.1.2并且我使用的是GDB 6.6-45。我使用-g -Wall -O0标志编译了代码,以确保可以使用GDB调试代码。

我的问题是,无论我在哪里设置断点,都不会遇到断点。此外,在运行结束时,我收到此消息"如果没有调试过程,您就无法做到这一点。

根据消息的声音,我想我错过了一件非常微不足道的事情。但是,我无法弄明白。

任何帮助都将不胜感激。

修改

我正在开发的平台是VirtualBox上的Fedora 8。我之所以使用VirtualBox,是因为我不能正确地安装旧版本的GCC(4.1.2),而不会破坏Fedora 20,这是最新的。

根据GDB输出,(它非常基本):

[localhost]$ gdb programName
GNU gdb Red Hat Linux (6.6-45.fc8rh)
... typical messages
This GDB was configured as "i386-redhat-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run programName (program arguments here)
...
Program outputs and messages
...

Program exited normally.
You can't do that without a process to debug.
(gdb)

上面显示的是我所拥有的一切。为了设置我的断点,我做了类似的事情:

break main
break System::function_name
break System::line_number

当我运行info breakpoints时,断点会显示正确的cpp文件和行号或函数名称,启用标志为yes。

1 个答案:

答案 0 :(得分:0)

如果可能,请尝试避免-O标志,只使用-g -Wall。我在旧版本中看到了-O标志的一些问题。但我不确定他们是否也坚持使用新颖的gcc。试一试吧。