如何找到编译器为我的代码生成的符号名称?
我知道这是一个非常愚蠢的问题。我对编译器的实际工作原理几乎一无所知。
但最近我想找到编译器为我的 ivar、我的方法生成的符号名称。 我在哪里以及如何知道答案? (我只使用过一些IDE。所以如果解决方案简单一点更好。如果您提供的说明非常明确,那将会有很大的帮助)
(顺便说一句,有没有任何参考资料可以让我了解诸如此类的事情这个?)
PS.我是 IOS 开发人员。如果 gcc 和 LLVM 在这个问题上有不同的答案,我想知道两者。
I know this is pretty much a stupid question. I know almost nothing about how compiler really works.
But recently I want find what symbol name does the compiler generate for my ivar, my methods.
Where and how can I know the answer? (I have only used some IDEs. So if the solution is better to be simple . And it would be great help if the instructions you provide is really explicit)
(By the way,is there any reference that i can learn about the things like this?)
PS.I'm IOS developer.And if gcc and LLVM works different answer on this question , I would like to know both.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 nm 转储二进制对象的内容。然后,每个编译器都有自己的重整方式。我建议你看看 维基百科中 Objective C 的名称修改,它将帮助您了解重整的工作原理。
You can use nm to dump the content of a binary object. Then, each compiler has its own way of mangling. I suggest you have a look at Name mangling for objective C in wikipedia, it will help you understand how mangling works.
当然,GCC 和 Clang 必须具有兼容的名称修改方案,因为它们可以使用彼此的代码。
Surely GCC and Clang must have compatible name-mangling schemes, since they can use each other's code.
如果您使用的是 XCode 3,请选择一个源文件,然后从“构建”菜单中选择“显示汇编代码”。
显然 XCode 4 用户不需要汇编代码:-(
If you are using XCode 3 select a source file and then pick "Show Assembly Code" from the Build menu.
Apparently XCode 4 users do not need assembly code :-(