gcc - 如何在MacPorts gcc 4.5中调试C++ 0x程序?

标签 gcc gdb c++11 macports debug-symbols

我有一个正在尝试调试的简单c++程序,但是gdb找不到库的目标文件(或者没有调试信息可用),而且它似乎也无法找到我的可执行文件的调试符号。

我在MacX上的OSX 10.5.8上,并且使用

g++-mp-4.5 -Wall -pedantic -std=c++0x -g -ggdb -I/opt/local/include -L/opt/local/lib -lgsl -static-libstdc++ MCMC-simplex.cpp -o mcmc



(只有一个文件,而g++-mp-4.5是gcc/g++ 4.5的macports可执行文件)

当我尝试在生成的可执行文件上运行gdb时,我收到许多错误消息(在启动时),形式为

warning: Could not find object file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_gcc45/work/build/i386-apple-darwin9/libgcc/trunctfdf2_s.o" - no debug information available for "../../../gcc-4.5.0/libgcc/../gcc/config/soft-fp/trunctfdf2.c".



在我看来,这表明macports在其构建期间存在错误(似乎gdb在临时构建目录中查找目标文件)。

我应该补充一点,当我尝试在gdb(Apple提供的程序)中列出程序时,它会尝试在.s中寻找随机的/var/tmp文件,对我来说,这听起来像是汇编文件。这就是为什么我说它似乎也无法为我的程序找到调试符号的原因。

当我尝试MacPorts gdb 7.1时,我得到了

warning: `/var/folders/Xa/XaqHO9PeEC8K-Nrd0L9xWk+++TM/-Tmp-//cc2IvFto.o': can't open to read symbols: No such file or directory. (no debugging symbols found)...done.



而且苹果的gdb不会发出许多错误消息(尽管最终结果是相同的)。

有谁遇到过这个问题,并提出了解决方案?

最佳答案

好吧,继续进行单个编译链接步骤的另一个“技巧”就是添加-save-temps=obj到您的g++命令行,以便

4 Remove /tmp/[random-string].o and .s



实际上是没有执行的(实际上,您最终会在要构建的目录中拥有规范的SOURCE.o和SOURCE.s文件,而不是某些临时文件夹中的RANDOM-STRING。[os],但是从角度来看定位调试符号的方法

关于gcc - 如何在MacPorts gcc 4.5中调试C++ 0x程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3353722/

相关文章:

c++ - 如何将 GCC 类传递给 MSVC dll?

c - 键入对 'OSD0_WRITE' 的 undefined reference

gdb - 如何在gdb中递归打印C结构

c++ - Cereal 序列化和多态性

c++ - 如果 lambda 在运行时被移动/销毁会怎样?

gcc中的C++ 11样式[[未使用]]属性?

c++ - 强制 GCC 不要优化掉一个未使用的变量?

gdb - 使用gdb在多屏窗口中调试MPI

c - 将 GDB 与 OpenMP 结合使用

c++ - 传递右值引用与非常量左值引用