我正在使用科学的Linux。 我正在处理大量的C ++代码和大量的cpp文件。 现在,它编译成功,但我得到的价值/数据是绝对错误的。 另外,我对代码做了一些小的修改,导致了seg错误。
在目录user/project/Build
,inputmake
来编译并链接所有的cpp文件。 然后我必须通过inputuser/run/run.sh
来到user/project/Build/bin/project
来运行项目二进制user/run/run.sh
当我进入目录/user/project/Build/bin
,然后键入gdb project
然后run
,我看到Program exited with code 01. Missing separate debuginfos, use: debuginfo-install glibc..
如果我尝试设置一个断点,例如通过break test.cpp:19
,我得到消息No source file named test.cpp. Make breakpoint pending on future shared library load?
No source file named test.cpp. Make breakpoint pending on future shared library load?
但我清楚地有一个名为test.cpp的源文件
我怎样才能设置断点? 考虑到我是Unix的初学者,我应该使用另一个IDE,比如emacs或Qt创build者吗?
你读过GDB的文档吗? 阅读它是绝对值得的。 阅读gdb
一些教程
如果你的Makefile
-s是由cmake生成的,你还应该研究cmake
的文档和make
的文档 。 另请参阅相关问题的答案 。
你用g++ -Wall -g
编译了所有的软件( 没有任何优化标志,比如-g3
或-O2
) – 或者甚至是-g3
而不是-g
?
你甚至可以安装你正在使用的主要库的调试变体(例如像glibc-debuginfo
等包)
你可能想要指定(用于gdb
)的源代码目录,用gdb
的dir
命令来搜索…
是的,我推荐使用emacs
。 但最重要的是,我强烈建议花费几个小时(甚至几天,甚至几周)来学习更多关于Linux和软件开发的知识(有很多书,网站, 教程和其他培训,…)。 也许从一个像hello-world这样的小程序开始(学习如何用g++
编译并用gdb
进行调试)。 然后尝试编译和调试一个你喜欢的小型(例如十万行源代码)免费软件(例如fishshell或者你从sourceforge或github获得的任何东西),以便了解这种软件是如何构建的。
如果你正在使用(或改进)一个大型的科学软件,它可能有一些社区网站,邮件列表或论坛寻求帮助(参见geant或kiva或aster作为例子,我只知道名字!)。 也请使用它们。
PS。 这主要不是选择工具的问题:你使用的是好的(GCC,即g++
, emacs
, gdb
, make
, grep
或ack , etags , git , awk
,….)。 知道如何明智地使用它们并结合它们的使用,这是一件很重要的事情,要花上数周甚至数月的时间。 另见这个 & 那 。