美文网首页iOS一点通
1、iOS 强化- LLVM编译(lldb源码调试)

1、iOS 强化- LLVM编译(lldb源码调试)

作者: Jax_YD | 来源:发表于2021-03-09 09:27 被阅读0次

1、获取源码

git clone --depth 1 https://github.com/llvm/llvm-project.git

2、配置,构建LLVM和Clang

新版mackOS默认的shellzsh,所以在终端执行以下命令:

echo 'export OSX_COMMANDLINE_SDKROOT="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"' >> ~/.zshrc

执行上面命令之后可以打开zshrc文件,看一下刚刚输入的地址是否正确(\color{red}{粘贴命令的时候千万:不要有空格、 不要有空格、 不要有空格}):

open ~/.zshrc

然后执行:

source ~/.zshrc

⚠️ 注意:在执行第二步的时候要查看一下/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk是否存在?
如果不存在请及时安装:

xcode-select --install

否则影响接下来的配置。

3、使用brew安装cmake

brew install cmake

如果提示已安装,可以更新也可以不更新

开始构建

1、cd llvm-project :进入llvm-project文件夹
2、mkdir build :创建build文件夹
3、cd build :进入build文件夹
4、构建Xcode项目:

 cmake -G Xcode -j 6 -DLLVM_ENABLE_PROJECTS='libcxx;libc++;clang;lldb' -DLLDB_USE_SYSTEM_DEBUGSERVER=ON -DLLDB_TEST_COMPILER=clang++ -DCMAKE_OSX_SYSROOT=$OSX_COMMANDLINE_SDKROOT ../llvm

一些常见的构建系统生成器:

  • Ninja:大多数llvm开发人员都使用Ninja
  • Unix Makefiles:用于生成与make兼容的并行makefile
  • Visual Studio:用于生成Visual Studio项目和解决方案
  • Xcode:用于生成Xcode项目

这里我们选用Xcode
-j 参数指定使用的cpu核心数量。例如上面的指令中使用的是6个。根据自己电脑情况指定。

这个过程耗时会比较久一点

Xcode 相关配置

1、进入build目录下,打开LLVM.xcodeproj
2、进入Xcode会有弹框提示,选择Manually Manage Schemes
注意 ⚠️ :\color{red}{不要选择}Automatically Create Schemes,否则会引入一些不必要的scheme,拖累Xcode的速度。
原则:使用哪个scheme,就引入哪个scheme
3、创建schemeTarget选择lldb

⚠️ 第一次运行的时候,需要我们进行编译,以重新生成调试符号,之后在运行可以Run Without Building;这就意味着,当你的代码没有改变的时候,不需要重新编译,直接运行现有的可执行文件即可。

⚠️ 当使用别人编译过的项目的时候,只需要执行下面的指令:

cmake -G Xcode -j 6 -DLLVM_ENABLE_PROJECTS='libcxx;libc++;clang;lldb' -DLLDB_USE_SYSTEM_DEBUGSERVER=ON -DLLDB_TEST_COMPILER=clang++ -DCMAKE_OSX_SYSROOT="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk" ../llvm

立马回报错:
此时将需要在llvm-project/build目录中的CMakeCache.txt删除,然后重新执行上述命令即可。

相关文章

  • 1、iOS 强化- LLVM编译(lldb源码调试)

    1、获取源码 2、配置,构建LLVM和Clang 新版mackOS默认的shell是zsh,所以在终端执行以下命令...

  • LLDB调试工具简介:1-常用命令

    LLDB简介 LLDB是LLVM下的调试器。Xcode从4.0开始编译器开始改用LLVM,相应的调试器也从gdb改...

  • LLDB调试和实战

    LLDB LLDB官方文档教程 Xcode4.0开始,编译器改用LLVM,调试器从gdb改为LLDB LLDB全称...

  • iOS开发之LLDB调试

    概述 LLDB是LLVM下的调试器。Xcode4.0开始,编译器开始使用LLVM,相应的调试器也从gdb改为LLD...

  • dailyLearning -- LLDB常用调试命令

    LLDB LLDB是一个命令行调试环境, 内置于Xcode的调试工具, 它与LLVM编译器一起, 带给我们更丰富的...

  • Swift 关于Crash的一些看法

    之前写的几篇文章iOS调试技巧, LLDB, LLVM, 解析dSYM文件 都是可以有效调试错误, 这篇文章主要是...

  • 源码调试准备

    objc_debug 可编译苹果官方源码objc!可编译源码,LLDB调试,方便大家探索学习! 苹果开源 :mac...

  • LLDB

    LLDB(lower level debugger,底层调试器) ,LLDB是用LLVM(lower level ...

  • LLDB

    随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器。它与LLVM编译器一...

  • iOS 调试

    LLDB是用LLVM中可重用组件构建的下一代高性能调试器,包括完整的LLVM编译器。 一.dsYM文件 Xcode...

网友评论

    本文标题:1、iOS 强化- LLVM编译(lldb源码调试)

    本文链接:https://www.haomeiwen.com/subject/ouirqltx.html