【发布时间】:2015-02-23 18:26:28
【问题描述】:
我正在使用科学 Linux。我正在处理带有大量 cpp 文件的 C++ 中的大量代码。现在,它编译成功,但我得到的值/数据肯定是错误的。此外,对于我对代码所做的一些小改动会导致段错误。
在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 的初学者,我应该使用 emacs 或 Qt creator 等其他 IDE 吗?
【问题讨论】:
-
要按行号设置断点,您需要将
-g选项传递给C++ 编译器。这是一个问题/答案,说明如何针对典型情况执行此操作:Compiling with cmake and include debug information -
在我的
Build目录中,我输入了cmake -DCMAKE_BUILD_TYPE:STRING=Debug ../src。但我得到的输出是Looking for pthread_create - not found. -- Found Threads: TRUE CMake Error at log4cplus/CMakeLists.txt:152 (SetupBoost): Unknown CMake command "SetupBoost". -- Configuring incomplete, errors occurred! -
好的,所以您使用的是 CMake,但您从未使用过
cmake命令? -
抱歉,我忘记你使用的是 C++,而不是 C。有
CXXFLAGS行吗?如果没有,请在 Makefile 顶部附近添加一行CXXFLAGS+= -g,然后重新编译。make喷出的 g++ 或 clang++ 命令行中应该有一个-g。 -
现在编辑 Makefile。可能发生的最糟糕的情况是,您对 Makefile 所做的手动更改有时会被 cmake 覆盖。最终,我们需要知道您键入的
cmake系列命令中的哪个命令来生成该 Makefile。