0

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

nm libgomp.so

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

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

我刚刚在 中找到了候选人libgomp.info,有一些环境变量的解释。有

* GOMP_DEBUG:: Enable Debugging output

但我不确定如何使用它。

4

1 回答 1

1

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

我不是这个主题的专家,但根据 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 源代码。

于 2019-08-08T07:21:40.743 回答