Tre*_*res 2 xcode objective-c lldb swift xcode11
Xcode 控制台有一个“调试器输出”过滤器。我知道这是与 一起使用的lldb,并且您可以使用断点将消息打印到此输出。我的问题不是如何做到这一点。
我的问题是:Xcode本身用于将lldb消息写入调试器输出(而不是目标输出)的底层机制是什么?stdout有没有类似或者stderr写在这里的变量?是否可以从 Xcode 目标代码 (Swift/Obj-C/C) 写入此输出?
看起来 Xcode 使用 tty 与 lldb 进行通信,您可以使用以下方式与调试器输出进行交互:
echo "Wheeeeeeee" > $(lsof -p $(ps -A | grep -m1 MacOS/Xcode | awk '{print $1}') | grep -m2 dev/ttys | tail -1 | awk '{print $9}')
分解上面的内容:
$ ps -A | grep -m1 MacOS/Xcode | awk '{print $1}'
21280
Run Code Online (Sandbox Code Playgroud)
这给出了 Xcode 的进程 ID (21280)。使用它,我们可以找到它打开的文件:
$ lsof -p 21280 | grep /dev/ttys
Xcode 21280 tres 47u CHR 16,3 0t0 3569 /dev/ttys003
Xcode 21280 tres 58u CHR 16,5 0t0 3575 /dev/ttys005
Run Code Online (Sandbox Code Playgroud)
数字最大的那个(/dev/ttys005在本例中)就是我们想要的,所以让我们提取它。tail -1将为我们提供最后一行输出,并将awk '{print $9}'为我们提供该行的第 9 项,这就是我们想要的!
$ lsof -p 21280 | grep /dev/ttys | tail -1 | awk '{print $9}'
/dev/ttys005
Run Code Online (Sandbox Code Playgroud)
现在我们可以用它来写我们想要的任何内容:
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |