Introduced the capability to launch the debug server in a separate process // Resolve #4722

This commit is contained in:
Ivan Kravets
2024-01-09 21:00:42 +02:00
parent 4729d9f55d
commit ba58db3079
8 changed files with 16 additions and 30 deletions

View File

@ -21,6 +21,7 @@ test-driven methodologies, and modern toolchains for unrivaled success.
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
* Added support for Python 3.12 * Added support for Python 3.12
* Introduced the capability to launch the debug server in a separate process (`issue #4722 <https://github.com/platformio/platformio-core/issues/4722>`_)
* Introduced a warning during the verification of MCU maximum RAM usage, signaling when the allocated RAM surpasses 100% (`issue #4791 <https://github.com/platformio/platformio-core/issues/4791>`_) * Introduced a warning during the verification of MCU maximum RAM usage, signaling when the allocated RAM surpasses 100% (`issue #4791 <https://github.com/platformio/platformio-core/issues/4791>`_)
* Drastically enhanced the speed of project building when operating in verbose mode (`issue #4783 <https://github.com/platformio/platformio-core/issues/4783>`_) * Drastically enhanced the speed of project building when operating in verbose mode (`issue #4783 <https://github.com/platformio/platformio-core/issues/4783>`_)
* Upgraded the build engine to the latest version of SCons (4.6.0) to improve build performance, reliability, and compatibility with other tools and systems (`release notes <https://github.com/SCons/scons/releases/tag/4.6.0>`__) * Upgraded the build engine to the latest version of SCons (4.6.0) to improve build performance, reliability, and compatibility with other tools and systems (`release notes <https://github.com/SCons/scons/releases/tag/4.6.0>`__)

View File

@ -24,7 +24,9 @@ from platformio.project.options import ProjectOptions
class DebugConfigBase: # pylint: disable=too-many-instance-attributes class DebugConfigBase: # pylint: disable=too-many-instance-attributes
def __init__(self, platform, project_config, env_name, port=None): DEFAULT_PORT = None
def __init__(self, platform, project_config, env_name):
self.platform = platform self.platform = platform
self.project_config = project_config self.project_config = project_config
self.env_name = env_name self.env_name = env_name
@ -48,7 +50,6 @@ class DebugConfigBase: # pylint: disable=too-many-instance-attributes
self._load_cmds = None self._load_cmds = None
self._port = None self._port = None
self.port = port
self.server = self._configure_server() self.server = self._configure_server()
try: try:
@ -120,8 +121,10 @@ class DebugConfigBase: # pylint: disable=too-many-instance-attributes
@property @property
def port(self): def port(self):
return ( return (
self.env_options.get("debug_port", self.tool_settings.get("port")) self._port
or self._port or self.env_options.get("debug_port")
or self.tool_settings.get("port")
or self.DEFAULT_PORT
) )
@port.setter @port.setter

View File

@ -16,6 +16,7 @@ from platformio.debug.config.base import DebugConfigBase
class GenericDebugConfig(DebugConfigBase): class GenericDebugConfig(DebugConfigBase):
DEFAULT_PORT = ":3333"
GDB_INIT_SCRIPT = """ GDB_INIT_SCRIPT = """
define pio_reset_halt_target define pio_reset_halt_target
monitor reset halt monitor reset halt
@ -31,8 +32,3 @@ $LOAD_CMDS
pio_reset_halt_target pio_reset_halt_target
$INIT_BREAK $INIT_BREAK
""" """
def __init__(self, *args, **kwargs):
if "port" not in kwargs:
kwargs["port"] = ":3333"
super().__init__(*args, **kwargs)

View File

@ -16,6 +16,7 @@ from platformio.debug.config.base import DebugConfigBase
class JlinkDebugConfig(DebugConfigBase): class JlinkDebugConfig(DebugConfigBase):
DEFAULT_PORT = ":2331"
GDB_INIT_SCRIPT = """ GDB_INIT_SCRIPT = """
define pio_reset_halt_target define pio_reset_halt_target
monitor reset monitor reset
@ -36,11 +37,6 @@ $LOAD_CMDS
$INIT_BREAK $INIT_BREAK
""" """
def __init__(self, *args, **kwargs):
if "port" not in kwargs:
kwargs["port"] = ":2331"
super().__init__(*args, **kwargs)
@property @property
def server_ready_pattern(self): def server_ready_pattern(self):
return super().server_ready_pattern or ("Waiting for GDB connection") return super().server_ready_pattern or ("Waiting for GDB connection")

View File

@ -16,6 +16,7 @@ from platformio.debug.config.base import DebugConfigBase
class MspdebugDebugConfig(DebugConfigBase): class MspdebugDebugConfig(DebugConfigBase):
DEFAULT_PORT = ":2000"
GDB_INIT_SCRIPT = """ GDB_INIT_SCRIPT = """
define pio_reset_halt_target define pio_reset_halt_target
end end
@ -29,8 +30,3 @@ $LOAD_CMDS
pio_reset_halt_target pio_reset_halt_target
$INIT_BREAK $INIT_BREAK
""" """
def __init__(self, *args, **kwargs):
if "port" not in kwargs:
kwargs["port"] = ":2000"
super().__init__(*args, **kwargs)

View File

@ -16,6 +16,7 @@ from platformio.debug.config.base import DebugConfigBase
class QemuDebugConfig(DebugConfigBase): class QemuDebugConfig(DebugConfigBase):
DEFAULT_PORT = ":1234"
GDB_INIT_SCRIPT = """ GDB_INIT_SCRIPT = """
define pio_reset_halt_target define pio_reset_halt_target
monitor system_reset monitor system_reset
@ -30,8 +31,3 @@ $LOAD_CMDS
pio_reset_halt_target pio_reset_halt_target
$INIT_BREAK $INIT_BREAK
""" """
def __init__(self, *args, **kwargs):
if "port" not in kwargs:
kwargs["port"] = ":1234"
super().__init__(*args, **kwargs)

View File

@ -16,6 +16,7 @@ from platformio.debug.config.base import DebugConfigBase
class RenodeDebugConfig(DebugConfigBase): class RenodeDebugConfig(DebugConfigBase):
DEFAULT_PORT = ":3333"
GDB_INIT_SCRIPT = """ GDB_INIT_SCRIPT = """
define pio_reset_halt_target define pio_reset_halt_target
monitor machine Reset monitor machine Reset
@ -33,11 +34,6 @@ $INIT_BREAK
monitor start monitor start
""" """
def __init__(self, *args, **kwargs):
if "port" not in kwargs:
kwargs["port"] = ":3333"
super().__init__(*args, **kwargs)
@property @property
def server_ready_pattern(self): def server_ready_pattern(self):
return super().server_ready_pattern or ( return super().server_ready_pattern or (

View File

@ -62,7 +62,9 @@ class DebugServerProcess(DebugBaseProcess):
openocd_pipe_allowed = all( openocd_pipe_allowed = all(
[ [
not self.debug_config.env_options.get("debug_port"), not self.debug_config.env_options.get(
"debug_port", self.debug_config.tool_settings.get("port")
),
"gdb" in self.debug_config.client_executable_path, "gdb" in self.debug_config.client_executable_path,
"openocd" in server_executable, "openocd" in server_executable,
] ]