有没有办法检查从下面的代码( file1.o )生成的目标文件中是否存在临时引入的编译器?我们可以使用什么工具来从对象文件中获取这些信息?
//file1.cpp
void func(const int& num){}
int main(){ func(2); }发布于 2010-11-24 22:56:29
我能想到的最简单的方法是加载一个使用目标文件的程序,然后在调试器中反汇编函数。您发布的程序代码可以很好地解决这个问题。只需中断对func的调用,然后在单步执行函数时显示汇编程序。
在更复杂的程序中,您通常可以按名称显示给定函数的汇编代码。有关如何执行此操作,请查看调试器文档。在Windows (Visual Studio)上,您可以打开Disassembly窗口并输入函数名以显示汇编程序代码。
如果你有源代码,大多数编译器都允许你输出汇编程序,有时会和源代码混在一起。对于可视化C++,这是/Fa。
发布于 2010-11-24 22:56:42
如果您使用的是ELF系统,并且拥有GNU binutils,那么可以使用-s开关调用readelf。
发布于 2010-11-24 22:58:41
如果您有可用的源代码,那么查看由编译器生成的汇编文件(-save-temps对于gcc)可能会更容易一些。否则,objdump就是你的朋友。
https://stackoverflow.com/questions/4268087
复制相似问题