mirror of
https://github.com/lvgl/lvgl.git
synced 2025-02-04 07:13:00 +08:00
74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
import argparse
|
|
|
|
import gdb
|
|
|
|
|
|
class Debugger(gdb.Command):
|
|
"""Start debugpy server or connect to a debug server, so we can debug python code from IDE like PyCharm/VSCode"""
|
|
|
|
def __init__(self, host="localhost", port=11451):
|
|
self.__host = host
|
|
self.__port = port
|
|
super().__init__("debugger", gdb.COMMAND_USER)
|
|
|
|
def invoke(self, args, from_tty):
|
|
parser = argparse.ArgumentParser(description=Debugger.__doc__)
|
|
parser.add_argument(
|
|
"--host",
|
|
type=str,
|
|
help="Server listening host",
|
|
)
|
|
parser.add_argument(
|
|
"-p",
|
|
"--port",
|
|
type=int,
|
|
help="Server listening port",
|
|
)
|
|
parser.add_argument(
|
|
"-t",
|
|
"--type",
|
|
choices=["pycharm", "vscode", "eclipse"],
|
|
help="Debugger type",
|
|
required=True,
|
|
)
|
|
|
|
try:
|
|
args = parser.parse_args(gdb.string_to_argv(args))
|
|
except SystemExit:
|
|
return
|
|
|
|
if args.host:
|
|
self.__host = args.host
|
|
|
|
if args.port:
|
|
self.__port = args.port
|
|
|
|
if args.type == "pycharm":
|
|
self.connect_to_pycharm()
|
|
elif args.type == "vscode":
|
|
self.connect_to_vscode()
|
|
elif args.type == "eclipse":
|
|
self.connect_to_eclipse()
|
|
|
|
def connect_to_pycharm(self):
|
|
try:
|
|
import pydevd_pycharm
|
|
except ImportError:
|
|
print("pydevd_pycharm module not found. Please install it using pip.")
|
|
return
|
|
|
|
pydevd_pycharm.settrace(self.__host, port=self.__port, stdoutToServer=True, stderrToServer=True)
|
|
|
|
def connect_to_vscode(self):
|
|
try:
|
|
import debugpy
|
|
except ImportError:
|
|
print("debugpy module not found. Please install it using pip.")
|
|
return
|
|
|
|
debugpy.listen((self.__host, self.__port))
|
|
debugpy.wait_for_client()
|
|
|
|
def connect_to_eclipse(self):
|
|
print("Eclipse is not implemented yet")
|