Как передать команду stdout в отладочный файл lldb через stdin - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу запустить исполняемый файл, перенаправить его стандартный поток на канал моей программы, и LLDB отладит мою программу.Так, например:

cat my_file | ./main

и затем отладка ./main.Я знаю о process launch -i my_file, но это не совсем то, что я хочу сделать - я хочу, чтобы вывод исходил от stdout cat (это мог быть любой другой исполняемый файл, с которым -i не удалось бы добиться подобного поведения).Я не вижу соответствующих опций под help process launch.

1 Ответ

0 голосов
/ 17 декабря 2018

Это не вариант, поддерживаемый lldb.Вы можете получить почти тот же эффект, запустив:

(lldb) процесс attach -w -n main

, затем перейдите в командную строку и выполните команду cat | ./main.

lldb подключится к процессу, называемому main, при его создании.lldb делает это путем опроса таблицы процессов, чтобы она не остановилась в самом начале жизни программы.Однако обычно он улавливается очень рано (часто в фазе загрузки dyld), так что это может не быть проблемой для вас.Если это так - и main - это программа, которую вы можете перестроить, одно из решений - поместить что-то вроде этого в начало main:

int go_on = 1
while (go_on) { sleep(1); }

Затем, когда вы присоединитесь, выполните:

(lldb) expr go_on = 0
(lldb) continue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...