我正在使用科学的linux.我正在使用大量的cpp文件处理大量的C代码.现在,它成功编译,但我得到的价值/数据肯定是错误的.此外,对于代码进行的一些小改动会导致seg错误.
在目录user / project / Build中,我输入make来编译并链接所有cpp文件.然后我必须通过键入user / run / run.sh来转到user / project / Build / bin / project来运行项目二进制文件
当我转到目录/ user / project / Build / bin然后键入gdb项目然后运行时,我看到了
程序退出,代码为01.缺少单独的debuginfos,请使用:debuginfo-install glibc ..
如果我尝试设置断点,例如break test.cpp:19,我会得到消息No source file named test.cpp.
在未来的共享库加载中使断点挂起?
但我显然有一个名为test.cpp的源文件
我该如何设置断点?考虑到我是Unix的初学者,我应该使用另一个IDE,如emacs或Qt creator吗?
解决方法:
你读过GDB的documentation了吗?绝对值得一读.另请阅读gdb上的一些tutorial
如果你的Makefile-s是由cmake生成的,你还应该研究make的documentation of cmake
和documentation.另见this answer相关问题.
你用g -Wall -g编译了所有软件(并且没有任何优化标志,如-O1或-O2) – 或者甚至是-g3而不是-g?
您甚至可以安装正在使用的主要库的调试变体(例如glibc-debuginfo等软件包…)
您可能希望指定(对于gdb)要使用dir
command的gdb进行搜索的源目录…
是的,我建议使用emacs.但最重要的是,我强烈建议花费数小时(甚至数天甚至数周)来了解有关Linux和软件开发的更多信息(有很多书籍,网站,tutorials和other培训,……关于这一点).也许从一个小的,hello-world之类的程序开始(学习如何用g编译它并用gdb调试它).然后尝试编译和调试你喜欢的一个小的(例如十万行源代码)免费软件(例如fishshell或你从sourceforge或github得到的任何东西),只是为了感受这样的软件是如何构建的.
如果您正在使用(或改进)一个大型科学软件,它可能有一些社区网站,邮件列表或论坛寻求帮助(请参阅geant或kiva或aster作为示例,我只知道名称!).请也使用它们.
PS.它主要不是选择工具:你使用的是好的(GCC,即g,emacs,gdb,make,grep或ack,etags,git,awk,……).要知道如何明智地使用它们并将它们结合使用,这需要花费数周或数月的知识.另见this& that.