Я пытаюсь устранить ошибку в проекте с открытым исходным кодом, это расширение VSCode, которое добавляет поддержку отладки WinDbg.Ошибка заключается в том, что потоки stdin, stdout и stderr отладчика не передаются в VSCode, поэтому в среде IDE невозможно увидеть текстовый вывод программы или ответить на интерактивные запросы.
Для началас, я пытаюсь получить стандартный вывод отладчика на сервер отладки, где сейчас я просто запишу его в файл.Я планирую выяснить, как получить его в VSCode позже.
Код на сервере отладки ссылается на отладчика по «идентификатору системы», который, по-видимому, совпадает с PID.Я пытаюсь сделать:
var proc = Process.GetProcessById((int)systemId);
proc.OutputDataReceived += new DataReceivedEventHandler(StandardOutputHandler);
proc.BeginOutputReadLine();
Но я получаю ошибку:
System.InvalidOperationException: StandardOut has not been redirected or the process hasn't started yet
Я думаю, проблема в том, что я должен перенаправить потоки ввода-вывода, когда процессначал, но я не могу понять, как это сделать.Процесс запускается с этим кодом:
int hr = _debugger.CreateProcessAndAttachWide(
Defaults.NoServer,
$"{message.FullPath} {message.Arguments}",
Defaults.DEBUG,
Defaults.NoProcess,
DEBUG_ATTACH.DEFAULT);
(_debugger
- это IDebugClient4, а значение берется из точки входа DebugCreate в dbgeng.dll)
Я попытался создатьобрабатывать с перенаправленным вводом-выводом, используя класс System.Diagnostics.Process, но потом я не смог подключить отладчик, я думаю, потому что у Process нет никаких средств для создания процесса в состоянии SUSPENDED, и поэтому отладчик работал до этогоотладчик может подключиться.
Я действительно хочу устранить эту ошибку, поскольку она напрямую влияет на меня, но в настоящий момент я не знаю, что делать.
Спасибо за любую помощьВы можете предоставить.