对于root权限进程,保底可以用xcode来调试,当然前提是这个进程是debug版的,release版的进程调试不在本文覆盖范围内
xcode易用性远不如vscode/cursor,能在cursor里断点调试那就更方便了
普通进程cursor里直接launch或attach一下就可以直接调试,root权限的进程用curosr直接attach会报错,这时候就可以使用lldb的远程调试来处理了
本质上就是参考下面这篇官方文档
https://lldb.llvm.org/use/remote.html#remote-system
首先在mac上安装lldb
brew install lldb
然后把debugserver软链接到lldb-server同一目录下
ln -s /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/debugserver /opt/homebrew/opt/llvm/bin/debugserver
然后以sudo权限运行lldb-server
sudo /opt/homebrew/opt/llvm/bin/lldb-server platform --listen "*:1234" --server
剩下在cursor里配一下launch.json设定就可以了,
[
{
"name": "attach lldb",
"type": "lldb",
"request": "attach",
"pid": "${command:pickProcess}",
"sourceMap": {}
},
{
"name": "attach root process remote lldb port",
"type": "lldb",
"request": "attach",
"pid": "${command:pickProcess}",
"initCommands": [
"platform select remote-macosx",
"platform connect connect://localhost:1234"
],
"sourceMap": {}
},
{
"name": "launch mac program",
"type": "lldb",
"request": "launch",
"program": "${workspaceFolder}/bin/mac/Debug/myApp",
"args": [ ],
"cwd": "${workspaceFolder}/bin/mac/Debug/",
"sourceMap": {}
}
]
这样就可以很方便的在cursor里attach或launch应用来调试了,而且root权限的进程也同样可以调试,是不是要方便很多