我正在研究OpenMP的实现细节。我正在尝试查看libgomp.so的源代码。我有gcc的源代码,我知道如何构建它。但是我想在libgomp.so中添加调试符号,这样,下面的命令就会生效。
nm libgomp.so所以我刚刚生成了用configure构建gcc的Makefile。我认为在libgomp.so中添加调试符号与libgomp目录(gcc的子目录)中的Makefile.in,Makefile.am有关。但是文本太长了,而且有太多的标志。我想知道该在哪里修改。请帮我弄清楚。
实际上,我对这个系统还是个新手。我研究过Makefile几次,但Makefile.in、Makefile.am、configure等都是我这次第一次遇到的。
我刚刚在libgomp.info中找到了候选者,有一些环境变量的解释。的确有
* GOMP_DEBUG:: Enable Debugging output
但是我不确定如何使用它。
发布于 2019-08-08 15:21:41
(我没有足够的名气来发表评论,所以我只能把它写成答案。)
我不是这个话题的专家,但是根据nm的文档,它是针对目标文件的。libgomp.so是一个elf文件。您可以使用readelf -s来列出符号。而且你也不一定非得自己编译gcc。你可以在大多数linux发行版上安装libgomp的调试符号(在基于ubuntu的系统及其sudo apt-get install libgomp1-dbg上)。
理解openmp的很大一部分是理解编译器对omp编译指示做了什么,所以你可能想要在你的项目中为openmp启用源代码调试。为此,您可以将gdb指向openmp源代码,或者将openmp源代码与您的项目相关联,这样调试器就可以找到所需的源代码。在我的例子中,gdb在../../../src/libgomp/parallel.c中查找源代码。将源代码与我的可执行文件相关联实际上是有效的,并且让我在IDE中调试时逐步浏览openmp源代码。
https://stackoverflow.com/questions/57386067
复制相似问题