Skip to content

Latest commit

 

History

History
132 lines (98 loc) · 4.12 KB

File metadata and controls

132 lines (98 loc) · 4.12 KB

使用 VSCode debug CocoaPods 源码和插件

Debug cocoapods

Debug plugin

需要安装的工具

Debug Ruby 用的 gem

gem install ruby-debug-ide
gem install debase

VSCode Ruby 插件

Ruby

借助 bundler debug

  • 在根目录创建 Gemfile
gem 'cocoapods', path: 'path/to/cocoapods/'
gem 'cocoapods-binary', path: 'path/to/cocoapods-binary/'
gem 'ruby-debug-ide'
gem 'debase'
  • 运行 bundle install
  • 创建 .vscode/launch.json
{
  "configurations": [{
      "name": "Debug CocoaPods Plugin with Bundler",
      "showDebuggerOutput": true,
      "type": "Ruby",
      "request": "launch",
      "useBundler": true,
      "cwd": "${workspaceRoot}/Testing",
      "program": "${workspaceRoot}/cocoapods/bin/pod",
      "args": ["install"]
    }
}
  • 在 VSCode 中对源码下断点
  • 按 F5 或点击菜单 Debug - Start Debugging

不借助 bundler debug

骚年,不要浪费时间了,快去使用 bundler 吧!

Debug CocoaPods 源码

git clone https://github.com/CocoaPods/CocoaPods.git
  • 把 clone 的仓库切换到和本地 pod 版本相同的 tag 上
git checkout `pod --version`
  • 在根目录创建 .vscode/launch.json 并填入以下内容(注意,有几个字段需要按实际填写
{
  "configurations": [{
    "name": "Debug CocoaPods Plugin",
    "showDebuggerOutput": true,
    "type": "Ruby",
    "request": "launch",
    "cwd": "path/to/podfile/dir", // pod 命令执行的路径
    "program": "${workspaceRoot}/bin/pod",
    "args": ["install"] // `pod` 命令的参数
  }]
}
  • 注释 bin/pod:L27 (# require 'bundler/setup')
  • 在 VSCode 中对源码下断点
  • 按 F5 或点击菜单 Debug - Start Debugging

🔌 同时 debug CocoaPods 和插件源码

  • 创建一个新的文件夹,下面所有的操作都在这个文件夹中
  • Clone & checkout CocoaPods 的源码
  • Clone 或者创建一个 CocoaPods 插件
  • 把本仓库中的 .vscode 目录拷贝到创建的文件夹中
  • .vscode/launch.json 进行一些修改
    • cwd: pod 命令执行的路径
    • pluginPath: plugin 的路径
    • args: pod 命令的参数
  • 修改 cocoapods/bin/pod:L27
    • require 'bundler/setup 换成 require_relative '../../.vscode/plugin_patch', 参考这里
  • 在 VSCode 中对源码下断点
  • 按 F5 或点击菜单 Debug - Start Debugging

🌰 一个 debug CocoaPods 源码及插件的例子

本仓库中 CocoaPods 源码的版本为 1.8.0.beta.1,因为 CocoaPods 依赖的 gem 如 CocoaPods-Core 使用的还是系统内的版本,所以为了防止兼容性问题,本地安装版本也需要安装这个版本的 pod

  • Clone 这个仓库
  • 在 VSCode 中下断点
    • eg. cocoapods/lib/cocoapods/command/install.rb:L46
    • eg. cocoapods-binary/lib/cocoapods-binary/Main.rb:L101
  • 按 F5 或点击菜单 Debug - Start Debugging
  • Have fun 🌸

如果有任何问题,欢迎提交 issue 😉

喜欢就点个 🌟 吧