Отладка встроенного кода 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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