这可能是一个非常基本的问题。但是,我无法通过搜索网络找到任何答案。
我有一个我需要用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。
答案 0 :(得分:0)
如果可能,请尝试避免-O标志,只使用-g -Wall。我在旧版本中看到了-O标志的一些问题。但我不确定他们是否也坚持使用新颖的gcc。试一试吧。