为了获得可重现的构建,我们在编译时使用--ffile-prefix-map=/path/to/src=SRC --file-prefix-map=/path/to/lib=LIB
选项。类似地,对于gdb
,我可以set substitute-path SRC=/path/to/src
等等。
但是,我不知道如何用objdump -S
做类似的事情。我可以用一个小的符号链接迷宫来解决它,但是我不理解objdump
的--prefix
选项,或者不知道它是否是正确的。我尝试了--prefix-strip=1 --prefix=/path/to/src
,但它似乎没有做我所期望的(好吧,它没有设法包括任何源代码!)
有什么办法可以做到这一点吗?
1条答案
按热度按时间irlmq6kh1#
经过一些实验和对
objdump
实用程序的源代码的快速了解,为了确保我从objdump(1)
得到了正确的东西,我设法实现了预期的结果。这可能会令人困惑,因为我没有做任何特别的事情,但一切都如预期的那样。首先,我创建了一个简单的“Hello,world!“在一个名为
test.c
的文件中的程序:使用以下命令编译它:
使用
strings test | grep /src
验证了/src
实际上进入了生成的test
二进制文件,所以现在是时候使用以下命令让objdump -S
找到源代码了:下面是生成的输出的摘录,其中显示了反汇编代码中所需的源代码片段:
因此,在您使用的环境中,一定有什么东西不太正确。也许最好先复制一个像这样的简单示例,看看它是否能按预期工作。我希望这能帮上忙。
另请参阅this question以了解更多信息。