Захват STDOUT/STDERR приложения Windows

Вопрос или проблема

Я использую приложение с открытым исходным кодом (conkeror), которое настраивается через файл, содержащий javascript. Все проблемы с javascript выводятся в консоль. Это нормально под Linux, так как вся информация отображается, если программа запущена из командной оболочки. Однако под Windows никакая информация не отображается, даже когда программа запущена из оболочки. Есть ли способ отобразить эту информацию в оболочке или сохранить ее, скажем, в файл?

Обычно, используя командную строку в Windows, можно перенаправить вывод в файл, используя “>”, например:

dir > mylist.txt

Это сохранит вывод команды dir в файл с названием mylist.txt.

Итак, если ваш исполняемый файл называется conkeror.exe, попробуйте выполнить его следующим образом:

conkeror.exe > output.txt

Я быстро установил Conkeror, но не уверен, какой вывод вы ожидаете, поэтому в итоге у меня получился файл нулевой длины.

DebugView позволит вам отслеживать нужные сообщения, даже из оконного приложения.

Ответ или решение

Чтобы захватить вывод STDOUT и STDERR из приложения Windows, такого как Conkeror, необходимо учесть несколько аспектов. В отличие от Linux, где вывод обычно отображается в терминале, в Windows некоторые приложения могут не направлять свои сообщения в консольный вывод. Рассмотрим шаги и инструменты, которые помогут вам получать нужные данные.

Способы Захвата Вывода

  1. Перенаправление в файл:
    В Windows можно использовать оператор > для перенаправления стандартного вывода (STDOUT) в файл. Однако, как вы заметили, это может не работать для вывода ошибок ( STDERR). Чтобы захватить и STDOUT, и STDERR, используется следующий синтаксис:

    conkeror.exe > output.txt 2>&1

    Здесь 2>&1 перенаправляет STDERR (поток 2) в то же место, что и STDOUT (поток 1), таким образом, всё, что будет выведено, попадёт в output.txt.

  2. Использование DebugView:
    Программа DebugView от Sysinternals является полезным инструментом для мониторинга сообщений и отладочной информации, которую генерируют приложения. Вы можете её скачать и запустить. После этого:

    • Откройте DebugView.
    • Запустите conkeror.exe, и информация о выводе сообщений должна отобразиться в DebugView, даже если приложение не выводит данные в консоль.
  3. Использование PowerShell:
    Если вы предпочитаете PowerShell, вы можете также использовать его для выполнения приложения и захвата вывода. Например:

    Start-Process -FilePath "conkeror.exe" -RedirectStandardOutput "output.txt" -RedirectStandardError "error.txt"

    Это создаст два отдельный файла для стандартного вывода и вывода ошибок.

Рекомендации

  • Проверьте документацию Conkeror на наличие параметров командной строки, которые могут управлять, куда направляется вывод. Некоторые приложения имеют эти настройки.
  • Убедитесь, что вы запускаете командную строку (или PowerShell) с правами администратора, особенно если столкнетесь с ограничениями доступа.
  • Если всё равно не удается получить нужный вывод, рассмотрите возможность использования инструментов для отладки JavaScript, так как Conkeror использует JavaScript для своей конфигурации.

Заключение

Захват вывода стандартных потоков в Windows может быть менее интуитивным по сравнению с другими операционными системами. Однако, используя различные методы перенаправления и инструменты, такие как DebugView, вы можете эффективно получать необходимую информацию из приложений, таких как Conkeror. Удачи в вашей работе с JavaScript и настройкой вашего окружения!

Оцените материал
Добавить комментарий

Капча загружается...