gdb程序使用CMake退出代码01以获取程序

时间:2015-02-23 18:26:29

标签: c++ linux qt emacs gdb

我正在使用科学的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吗?

1 个答案:

答案 0 :(得分:0)

您是否阅读了GDB的documentation?绝对值得一读。另请阅读gdb

上的一些tutorial

如果您的Makefile - 是由 cmake 生成的,您还应该研究makeg++ -Wall -g -O1。另请参阅documentation of cmake相关问题。

您是否使用-O2没有任何优化标记,如-g3-g)编译所有您的软件 - 或者甚至可能是glibc-debuginfo而不是gdb

您甚至可以安装正在使用的主要库的调试变体(例如gdb等软件包......)

您可能希望指定(emacs)源目录以使用g++的{​​{3}}进行搜索...

是的,我建议使用gdb。但最重要的是,我强烈建议花费数小时(甚至数天甚至数周)来了解有关Linux和软件开发的更多信息(有很多书籍,网站,documentationthis answer培训,。 .. 关于那个)。也许从一个小的,hello-world之类的程序开始(学习如何用g++编译它并用emacs调试它)。然后尝试编译和调试您喜欢的小型(例如十万行源代码)免费软件(例如dir command或您从tutorialsother获得的任何内容,只是为了了解如何构建这样的软件。

如果您正在使用(或改进)一个大型科学软件,它可能有一些社区网站,邮件列表或论坛寻求帮助(请参阅fishshellsourceforgegithub例子,我只知道名字!)。请也使用它们。

PS。主要不是选择工具:您使用的是好的工具(GCC即gdbmakegrepawk,{{1}}或{ {3}},geantkiva,{{1}},....)。要知道如何明智地使用它们并将它们结合使用,这需要花费数周或数月的知识。另见aster& ack。功能