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)
其他地方建议的解决方法之一对我有用:我创建了 xcode 项目并重新编译了二进制文件。之后,调试信息足以用仪器对其进行分析。
您正在使用-O3
选项,该选项明确向编译器表示它应该以最佳方式优化指令。因此,编译器将重新排列那些可能会破坏源代码和可执行文件之间通信的指令。
应使用 -O0 -g
进行调试。看到这里。
与 GCC 不同,clang 在优化时无法生成调试信息。
由于您正在分析,因此禁用优化会破坏您尝试收集的信息。因此,您必须为此任务使用另一个编译器。
我没有使用过ICC,但是从文档中看,它可以在优化时生成调试信息。
相关文章:
- 我尝试使用MAP容器来映射资源,现在RESOURCEFILE正在获取所有信息.为什么
- 仅从 C/C++ 中的日期获取日期信息
- 错误 VSP1011:无法获取调试信息.与 /配置文件链接器开关链接
- Qt QProcess 获取内存信息
- 如何在 Windows 进程回调中断开连接时获取设备信息(硬件 ID)
- 使用PCL(点云库)获取对象信息的数组
- 获取IntelliSense信息与扩展中的内部
- 获取系统信息 UWP
- 在不使用API的情况下,如何在Windows中获取过程信息
- 如何使用 c++ 在窗口中获取系统信息
- clang:如何在 OS X 中分析时获取源信息
- 在进程外使用MiniDumpWriteDump时,如何获取异常信息
- LDAP函数中是否有任何功能可以在不使用ldap_search的情况下获取用户信息
- 如何将命令写入TTYACM0设备,并使用C/C 获取所得信息数据
- 获取索引信息的问题-SQL Server
- cpp 映射作为函数参数获取警告信息 "discards qualifiers"
- 如何获取GPU信息
- 如何处理在 c++ 中读取时从文件中获取的信息
- 从用catch(..)捕获的异常中获取一些信息
- 如何使用OpenCV和C ++获取帧信息