2015-02-23 43 views
0

我使用科学的linux。我正在用大量的cpp文件处理C++中的大量代码。现在,它编译成功,但我得到的价值/数据绝对是错误的。此外,我对代码所做的一些小改动会导致seg错误。gdb程序退出代码01使用CMake程序

在目录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创建者吗?

+0

要按行号设置断点,需要将'-g'选项传递给C++编译器。这里有一个问题/答案,说明如何做到这一点的典型案例:[用cmake编译并包含调试信息](http://stackoverflow.com/a/8447957/2554472) – 2015-02-24 16:35:21

+0

在我的'Build'目录中,我输入了' cmake -DCMAKE_BUILD_TYPE:STRING =调试../ src'。但我得到的输出是“寻找pthread_create - 找不到。 - Found Threads:TRUE CMake Error at log4cplus/CMakeLists.txt:152(SetupBoost): 未知的CMake命令“SetupBoost”。 - 配置不完整,发生错误! – user4352158 2015-02-24 18:01:51

+0

好的。所以你通常运行'cmake ../ src'并且工作正常? – 2015-02-24 18:06:55

回答

0

您是否阅读过GDB的documentation?阅读它绝对是值得的。也有一些tutorial请仔细阅读gdb

如果被cmake的产生的Makefile -s,你也应该学习documentation of cmakemakedocumentation。有关相关问题,另请参阅this answer

你有没有编译所有软件与g++ -Wall -g(和没有任何优化标志像-O1-O2) - 或-g甚至-g3呢?

你甚至可以安装调试正在使用的主要图书馆的变种(如包,比如glibc-debuginfo等)

你可能想指定(对于gdb)的源目录与gdbdir command搜索...

是的,我推荐使用emacs。但最重要的是,我强烈建议花费几个小时(甚至几天甚至几周)来学习更多关于Linux和其上的软件开发(有很多书籍,网站,tutorialsother培训......)。也许从一个像Hello程序这样的小世界开始吧(学习如何用g++进行编译并用gdb进行调试)。然后尝试编译和调试一个你喜欢的小型(例如十万行源代码)免费软件(例如fishshell或你从sourceforgegithub获得的任何东西),以便了解这种软件是如何构建的。

如果您正在使用(或改善)大科学的软件,它可能有一些社区网站,邮件列表或论坛求助(见geantkivaaster作为例子,这是我唯一的名字知道的!)。也请使用它们。

PS。这主要不是选择工具的问题:你使用的是好的(GCC即g++,emacs,gdb,make, grepack, etags,git,awk,....)。获得知识的时间是很重要的 - 需要数周或数月的时间 - 关于如何明智地使用它们并合并它们的使用。另见this & that

+0

如果它只有十几个人工作的代码,它不是一个巨大的代码,中等大小。 GCC编译器,Linux内核,mozilla浏览器或GEANT4仿真代码拥有数百万行代码(每个代码由几百人开发)。如果没有围绕该代码的社区,你应该开始一个! – 2015-02-24 22:49:50

+0

你真的应该编辑你的问题,通过更多的解释来提高他们,并给予更多的背景。至少用几句话解释你的代码在做什么,它是如何组织的(如果是这样的话)等等。 – 2015-02-24 22:55:15

相关问题