Отладка встроенного кода Python в приложении .Net с использованием Pythonnet и PdbC#

Место общения программистов C#
Anonymous
Отладка встроенного кода Python в приложении .Net с использованием Pythonnet и Pdb

Сообщение Anonymous »

У меня есть рабочий сервис, в котором мне нужно отладить код Python. Для выполнения кода Python мне нужно использовать Pythonnet. Модуль Pdb используется для отладки.
Я пробую что-то вроде этого:
python.txt:

Код: Выделить всё

import pdb

def func():
pdb.set_trace()
//code for debugging...

Код C#:

Код: Выделить всё

var pythonCode = File.ReadAllText(@"D:\python.txt");
Runtime.PythonDLL = @"D:\Python38\python38.dll";
PythonEngine.Initialize();

using (Py.GIL())
{
var pyModule = Py.CreateScope("scope");
pyModule.Exec(pythonCode);
}

Task.Run(() =>
{
using (Py.GIL())
{
pyModule.Exec("func()");
}
});

//some code

в коде Python я вызываю pdb.set_trace(), который ожидает ввода дальнейших команд отладчика (n(ext), s(tep) и т.д.) в console.
В коде C# я выполняю функцию Python в другом потоке, чтобы не блокировать основной поток службы, ожидающий ввода команды. Если я ввожу команды вручную, используя внутреннюю консоль VSCode, это работает. Но мне нужно передать команды отладчика из графического интерфейса через мою рабочую службу.
Как передать эти команды на стандартный ввод для программного выполнения кода Python из службы?

Подробнее здесь: https://stackoverflow.com/questions/781 ... et-and-pdb

Вернуться в «C#»