3

如何查找调试信息是否包含相对路径或绝对路径?

我正在尝试使用以下链接输出带注释的源(opannotate)。 http://oprofile.sourceforge.net/doc/opannotate.html

我想了解它,以便在 opannotate 中提供以下选项。

--base-dirs / -b [paths]/ 逗号分隔的路径前缀列表。当调试信息在系统上为不存在的源指定绝对路径时,这可用于将 OProfile 指向源文件的不同位置。前缀从调试源文件路径中去除,然后在 --search-dirs 指定的搜索目录中搜索。

--search-dirs / -d [paths] 逗号分隔的源文件搜索路径列表。当调试信息仅包含相对路径时,这对于查找源文件很有用。

谢谢。

4

1 回答 1

4

如果C_FLAGS编译期间包含该-g参数,则各个源文件的所有路径都包含在.debug_info生成的二进制可执行文件的部分中。

以下命令将转储到控制台,其中.c包含使用 debug-info 构建的二进制文件中存在的各种源文件的所有路径的完整列表。

$ readelf --debug-dump=info <binary-executable> | grep "\.c" | awk '{print $8}'

要在二进制文件的调试信息中搜索特定源文件的路径,可以根据需要修改grep "\.c"grep "<filename>"

有关更多详细信息,请查看这篇关于二进制文件中调试信息的优秀文章。

于 2013-08-08T05:48:15.823 回答