Как разрешить печать только определенного текста в консоли Emacs? - PullRequest
1 голос
/ 04 марта 2011

Этот вопрос, возможно, относится не только к Emacs, но и ко всей среде разработки, которая использует Console для процесса отладки. Здесь проблема. Я использую Eshell для запуска приложения, которое мы разрабатываем. Это приложение J2ME. А для отладки мы просто используем System.out.println(). А теперь предположим, что я хочу разрешить в консоли (в интерактивном режиме) отображать только текст, начинающийся с Eko:, возможно ли это?

Я установил Cygwin в своей среде Windows и попытался grep вывести результат так: run | grep Eko:. Он определенно фильтровал только вывод с Eko: в качестве начала, но он не интерактивен. Вывод подавлен до тех пор, пока приложение не закроется. Ну, в любом случае, это бесполезно.

Возможно ли это сделать? Я имею в виду, что нам не нужно трогать сам код приложения?

Я тоже отмечаю Linux, потому что, возможно, некоторые парни в Linux знают ответ.

Большое спасибо!

1 Ответ

1 голос
/ 04 марта 2011

Short: попробуйте добавить --line-buffered к вашей команде grep.

long: Я предполагаю, что ваше приложение сбрасывает свой выходной поток с каждым System.out.println(), и что grep имеет строки, доступные для немедленного чтения, но выбирает для буферизации вывода до тех пор, пока не будет сохранено «достаточно» вывода. чтобы смысл имел смысл писать. (Обычно это 4k или 8k данных, которые могут составлять несколько сотен строк, в зависимости от длины строки.)

Эта буферизация имеет большой смысл, когда выводом является другая программа в конвейере; сокращение ненужных переключений контекста - отличный способ повысить производительность программы.

Но если ваша печать достаточно медленная, и она не заполняет буфер достаточно быстро для вывода в режиме реального времени, то переключение на вывод с буферизацией строки может исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...