Debugging 使用调试标志编译gcc

Debugging 使用调试标志编译gcc,debugging,gcc,makefile,configure,libstdc++,Debugging,Gcc,Makefile,Configure,Libstdc++,我正试图从源代码构建gcc版本10.00.1,其中包含调试标志,以使某些函数(如STL中的方法)能够在GDB中打印。现在GDB会说“找不到方法std::stringstream::str”之类的话,即使在编译程序时打开了-g3标志 gcc的文档说明使用--enable libstdcxx debug标志配置应用程序,以便能够启用此支持。我决定用发行版配置的gcc中的相同标志构建应用程序,这些标志是 -v——带有pkgversion='Debian 9.2.1-28'——带有bugurl=file

我正试图从源代码构建gcc版本10.00.1,其中包含调试标志,以使某些函数(如STL中的方法)能够在GDB中打印。现在GDB会说“找不到方法std::stringstream::str”之类的话,即使在编译程序时打开了
-g3
标志

gcc的文档说明使用
--enable libstdcxx debug
标志配置应用程序,以便能够启用此支持。我决定用发行版配置的gcc中的相同标志构建应用程序,这些标志是

-v——带有pkgversion='Debian 9.2.1-28'——带有bugurl=file:///usr/share/doc/gcc-9/README.Bugs -启用语言= C、C++、GO、BRIG、D、FORTRAN、Objc,obj-c++--prefix=/usr--仅限gcc主版本--程序后缀=-9--程序前缀=x86_64-linux-gnu----启用共享--启用链接器构建id--libexecdir=/usr/lib--不包括gettext--启用线程=posix--libdir=/usr/lib--启用nls--启用引导--启用clocale=gnu--启用libstdcxx调试--启用libstdcxx时间=是--使用默认libstdcxx abi=new--启用gnu唯一对象--禁用vtable验证--启用插件--启用默认饼图--使用系统zlib--使用目标系统zlib=auto--启用objc gc=auto--启用多库--禁用werror--使用-arch-32=i686--使用abi=m64--使用多库列表=m32,m64,mx32--启用多库--使用tune=generic--启用卸载目标=nvptx none,hsa--不使用cuda驱动程序--启用检查=发布--构建=x86_64-linux-gnu--主机=x86_64-linux-gnu--目标=x86_64-linux-gnu--使用构建配置=引导lto精简--启用链接互斥锁

在成功的
make
makeinstall
之后,我仍然有同样的问题,GDB没有找到方法。我决定只使用
--enable libstdc++-debug
标志自行构建libstdc++。但是我在构建中的任何地方都找不到libstdc++.so.6文件的位置。我还没有运行
makeinstall
,因为我不想破坏我的系统。libstdc++.so.6应该位于构建中的何处?谢谢

我还没有运行
makeinstall
,因为我不想破坏我的系统

使用
--prefix
选项
configure
指定替代安装位置,以避免更换您的系统
gcc

我决定只使用
--enable libstdc++-debug
标志自己构建
libstdc++

确保在重新配置后
Make clean
,以便
Make
使用新的编译器和链接器标志重新构建它

我还没有运行
makeinstall
,因为我不想破坏我的系统

使用
--prefix
选项
configure
指定替代安装位置,以避免更换您的系统
gcc

我决定只使用
--enable libstdc++-debug
标志自己构建
libstdc++


请确保在重新配置后
Make clean
,以便
Make
使用新的编译器和链接器标志重新构建它。

只需添加
-g
标志对我有效。在这里查看更多调试选项:只需添加
-g
标志就可以了。请参见此处的更多调试选项: