diff --git a/requirements.txt b/requirements.txt
index 42bf9c4acd..42135681ea 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -10,7 +10,7 @@ opencamlib==2023.1.11
packaging==23.0
Pivy==0.6.8
ply==3.11
-ptvsd==4.3.2
+debugpy==1.6.7
pyNastran==1.3.4
pyshp==2.3.1
PySide2==5.15.2.1
diff --git a/src/Gui/RemoteDebugger.py b/src/Gui/RemoteDebugger.py
index 28353d96b5..637d757074 100644
--- a/src/Gui/RemoteDebugger.py
+++ b/src/Gui/RemoteDebugger.py
@@ -25,6 +25,7 @@
import FreeCAD as App
import FreeCADGui as Gui
from PySide import QtGui
+from freecad.utils import get_python_exe
class RemoteDebugger():
def __init__(self, parent=None):
@@ -46,11 +47,17 @@ class RemoteDebugger():
elif index == 1: # VS code
address = self.dialog.lineEditAddress.text()
port = self.dialog.spinBoxPort.value()
- redirect = self.dialog.checkRedirectOutput.isChecked()
- import ptvsd
- ptvsd.enable_attach(address=(address, port), redirect_output=redirect)
- ptvsd.wait_for_attach()
+ import debugpy
+
+ # get_python_exe is needed because debugpy needs a python interpreter to work.
+ # It does not have to be FC embedded interpreter.
+ # By default it attempts to use Freecad's PID mistaking it for python.
+ # https://github.com/microsoft/debugpy/issues/262
+ debugpy.configure(python=get_python_exe())
+ debugpy.listen((address, port))
+ debugpy.wait_for_client()
+
except Exception as e:
QtGui.QMessageBox.warning(self.dialog, "Failed to attach", str(e))
diff --git a/src/Gui/RemoteDebugger.ui b/src/Gui/RemoteDebugger.ui
index 382eb04393..f40327375a 100644
--- a/src/Gui/RemoteDebugger.ui
+++ b/src/Gui/RemoteDebugger.ui
@@ -89,16 +89,6 @@
- -
-
-
- Redirect output
-
-
- true
-
-
-
-