繁体   English   中英

clang:如何在OS X中进行分析时获取源信息

[英]clang: How to get source info while profiling in OS X

我使用clang 703.0.31编制了基准。 首先使用-c -flto -O3 -g(和其他一些标志)将所有源代码编译成目标文件,然后使用相同的clang(使用Apple LLVM 7.3.0,使用ld)和-g -flto将它们链接成可执行文件。 当我尝试分析可执行文件时,我可以看到函数名称和反汇编程序,但是该代码与源代码之间没有对应关系。 在该exe上的dsymutil会产生以下结果:警告:(x86_x64)/tmp/lto.o无法打开目标文件:没有这样的文件或目录警告:可执行文件(-arch x86_64)中没有调试符号任何想法我都缺少什么? (注意:我通常在Windows上工作,我对OS X的了解接近于0)

您正在使用-O3选项,该选项明确告诉编译器它应以最佳方式优化指令。 因此,编译器将重新排列那些可能破坏源代码和可执行文件之间对应关系的指令。

您应该使用-O0 -g进行调试。 看到这个

其他地方建议的解决方法之一对我有用:我创建了xcode项目并重新编译了二进制文件。 之后,调试信息就足以使用Instruments对其进行分析。

与GCC不同,clang在优化时无法生成debuginfo。

由于您正在分析,因此禁用优化会破坏您要收集的信息。 因此,您必须为此任务使用另一个编译器。

我没有使用过ICC,但是从文档看来 ,它可以在优化时产生debuginfo。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM