Как отладить приложение Delphi с перенаправленным выводом - PullRequest
5 голосов
/ 22 ноября 2010

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

  • Это работает: c:\dir\app.exe
  • Это дает сбой: c:\dir\app.exe >out.txt

Когда я добавляю >out.txt в качестве параметра в IDE (run\parameters\parameters\), я просто получаю >out.txt в качестве параметра.

Как отладить приложение с помощью stdout, перенаправленного в файл вместо консоли?

Ответы [ 3 ]

12 голосов
/ 22 ноября 2010

Перенаправление производится интерпретатором командной строки, в Windows это cmd.exe

Чтобы отладить приложение, просто запустите cmd.exe с аргументами propers, чтобы запустить приложение и перенаправить вывод, например:

cmd.exe / c "yourapplication.exe> ​​redirect.txt"

Чтобы сделать это изнутри IDE для отладки, настройте cmd.exe в качестве хост-приложения (Run / Parameters):

Run/Parameters dialog

Поместите точку останова, где вы хотите остановиться, и запустите новый cmd.exe (Project / Load process) с «Запуск до первого источника» после действия загрузки:

Load process dialog

И все готово ... отладчик должен остановить приложение на вашей точке останова.

2 голосов
/ 22 ноября 2010

Вы можете попробовать удаленную отладку:

  • в начале приложения, добавьте ReadLn;, который дает вам время присоединиться к процессу из Delphi

  • запустить приложение из командной строки (указав параметр> out.txt)

  • в Delphi, подключиться к процессу приложения (Run | Attach to Process...), установитьточку останова, а затем переключитесь в приложение, чтобы ввести ключ

Подсказка: точку останова отладчика также можно задать в коде:

asm
  int 3
end;
0 голосов
/ 23 ноября 2010

Убедитесь, что это не происходит из-за прав доступа к каталогу.Полностью укажите путь к выходному файлу, куда вы гарантированно сможете записать.В противном случае Windows7 может играть в игры с каталогом.(Виртуальный магазин).

...