我正在使用科学的linux。我正在用大量的cpp文件处理大量的C ++代码。现在,它成功编译,但我得到的价值/数据肯定是错误的。此外,对于代码进行的一些小改动会导致seg错误。
在目录user/project/Build
中,我输入make
来编译和链接所有cpp文件。然后,我必须通过键入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?
但我显然有一个名为test.cpp的源文件
如何设置断点?考虑到我是Unix的初学者,我应该使用另一个IDE,例如emacs或Qt creator吗?
答案 0 :(得分:0)
您是否阅读了GDB的documentation?绝对值得一读。另请阅读gdb
如果您的Makefile
- 是由 cmake 生成的,您还应该研究make
和g++ -Wall -g
-O1
。另请参阅documentation of cmake
相关问题。
您是否使用-O2
(没有任何优化标记,如-g3
或-g
)编译所有您的软件 - 或者甚至可能是glibc-debuginfo
而不是gdb
?
您甚至可以安装正在使用的主要库的调试变体(例如gdb
等软件包......)
您可能希望指定(emacs
)源目录以使用g++
的{{3}}进行搜索...
是的,我建议使用gdb
。但最重要的是,我强烈建议花费数小时(甚至数天甚至数周)来了解有关Linux和软件开发的更多信息(有很多书籍,网站,documentation和this answer培训,。 .. 关于那个)。也许从一个小的,hello-world之类的程序开始(学习如何用g++
编译它并用emacs
调试它)。然后尝试编译和调试您喜欢的小型(例如十万行源代码)免费软件(例如dir
command或您从tutorials或other获得的任何内容,只是为了了解如何构建这样的软件。
如果您正在使用(或改进)一个大型科学软件,它可能有一些社区网站,邮件列表或论坛寻求帮助(请参阅fishshell或sourceforge或github例子,我只知道名字!)。请也使用它们。
PS。主要不是选择工具:您使用的是好的工具(GCC即gdb
,make
,grep
,awk
,{{1}}或{ {3}},geant,kiva,{{1}},....)。要知道如何明智地使用它们并将它们结合使用,这需要花费数周或数月的知识。另见aster& ack。功能