通过向 libgomp.so 添加调试符号来构建 gcc

Build gcc with adding debugging symbol to libgomp.so

正在研究OpenMP的实现细节。我正在尝试查看 libgomp.so 的源代码。我有 gcc 的源代码,我知道如何构建它。但我想在 libgomp.so 中添加调试符号,这样,下面的命令就会生效。

nm libgomp.so

所以我刚刚生成 Makefile 以使用 configure 构建 gcc。我认为将调试符号添加到libgomp.so与libgomp目录(gcc的子目录)内的Makefile.inMakefile.am有关。但是文字太长,flag太多了。我想知道在哪里修改。请帮我弄清楚。

其实我是这个系统的新手。研究了几次Makefile,但是Makefile.inMakefile.amconfigure等是我这次第一次遇到的

刚刚在libgomp.info找到了candidate,里面有一些环境变量的解释。有

* GOMP_DEBUG:: Enable Debugging output

但是我不知道怎么用。

(我没有足够的声誉来发表评论,所以我必须把它写成答案。)

我不是这个主题的专家,但根据 nm 的文档,它适用于目标文件。 libgomp.so 是一个精灵文件。您可以改用 readelf -s 来列出符号。此外,您不一定必须自己编译 gcc。您可以在大多数 linux 发行版上安装 libgomp 的调试符号(在基于 ubuntu 的系统上它的 sudo apt-get install libgomp1-dbg)。

了解 openmp 的一个重要部分是了解编译器如何处理您的 omp pragma,因此您可能希望在项目中为 openmp 启用源代码调试。您可以通过将 gdb 指向 openmp 源代码或将 openmp 源代码与您的项目相关联来执行此操作,以便调试器可以找到所需的源代码。 在我的例子中,gdb 在 ../../../src/libgomp/parallel.c 中查找源代码。将源代码相对于我的可执行文件实际工作并让我在 IDE.

中调试时单步执行 openmp 源代码