我有一个正在尝试调试的简单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/