我们可以检查目标文件中是否存在由 C++ 引入的临时文件吗?编译器?

发布于 2024-10-03 20:07:01 字数 170 浏览 5 评论 0原文

有没有办法检查从下面的代码( file1.o )生成的目标文件是否存在临时引入的编译器?我们可以使用什么工具从目标文件中获取此类信息?

//file1.cpp
void func(const int& num){}
int main(){   func(2);  }

Is there a way to inspect object file generated from code below ( file1.o ) for presence of compiler introduced temporary? What tools can we use to obtain such info from object files?

//file1.cpp
void func(const int& num){}
int main(){   func(2);  }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

复古式 2024-10-10 20:07:01

我能想到的最简单的方法是加载一个使用目标文件的程序并在调试器中反汇编该函数。您发布的程序代码可以很好地解决此问题。只需中断对 func 的调用,然后在单步执行该函数时显示汇编器。

在更复杂的程序中,您通常可以按名称显示给定函数的汇编代码。检查调试器文档以了解如何执行此操作。在 Windows (Visual Studio) 上,您可以打开“反汇编”窗口并输入函数名称以显示汇编代码。

如果您有源代码,大多数编译器允许您输出汇编程序,有时与源代码混合。对于 Visual C++,这是 /Fa

The easiest way I can think of to do this is to load up a program that uses the object file and disassemble the function in the debugger. The program code you posted would work fine for this. Just break on the call to func and then display the assembler when you single-step into the function.

In a more complex program you can usually display the assembler code for a given function by name. Check your debugger documentation for how to do this. On Windows (Visual Studio) you can open the Disassembly window and enter the name of the function to display the assembler code.

If you have the source, most compilers allow you to output assembler, sometimes mixed with the source code. For Visual C++ this is /Fa.

此刻的回忆 2024-10-10 20:07:01

如果您使用的是 ELF 系统并且有 GNU binutils,您可以调用 readelf,可能使用 -s 开关。

If you're on an ELF system and have GNU binutils you can call readelf, probably with the -s switch.

徒留西风 2024-10-10 20:07:01

如果您有可用的源代码,那么查看编译器生成的汇编程序文件(对于 gcc 为 -save-temps)可能会更容易。否则,objdump 就是你的朋友。

If you have the source available, it is probably easier to look at the assembler file generated by the compiler (-save-temps for gcc). Otherwise, objdump is your friend.

土豪我们做朋友吧 2024-10-10 20:07:01

您可以使用 clang -cc1 --ast-print-xml 来获取翻译单元的 XML 表示形式。通过 AST 可以轻松检测到临时体的存在。

You can use clang -cc1 --ast-print-xml to get a XML representation of a translation unit. The presence of temporaries can be easily detected from the AST.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文