Как сохранить работу LLDB с помощью перенаправленных stdin, stdout и stderr - PullRequest
0 голосов
/ 11 мая 2018

Я работаю над задачей автоматизации, где мне нужно проверить, является ли какое-либо приложение отлаживаемым или нет.Итак, мой рабочий процесс:

  • Присоединение LLDB к процессу
  • Установка нескольких точек останова
  • Выполнение некоторых действий в целевом приложении
  • Проверка кадрав LLDB для некоторых ожидаемых выражений
  • Отсоединение отладчика из приложения.

Так как мой тестовый скрипт должен переключаться между приложением и отладчиком, я решил запустить LLDB в отдельном (фоновом) процессе и взаимодействовать с ним через именованные каналы.Примерно так:

#!/usr/bin
pipe=/tmp/mypipe
mkfifo $pipe    
lldb >out.txt 2>err.txt < $pipe &

Я отправляю команды так: echo "attach -n AppName" > /tmp/mypipe.Но моя проблема в том, что после выполнения любой команды LLDB завершается.Итак, последние строки в моем out.txt:

Executable module set to "/path/to/application".
Architecture set to: x86_64-apple-macosx.

И LLDB-процесс больше не существует.Есть ли способ сохранить его работоспособным?Спасибо!

...