@@ -485,11 +485,17 @@ def _setup_ui(self) -> None:
485485 self ._list = lst
486486 left_layout .addWidget (lst )
487487
488- # 刷新按钮
488+ # 刷新 + 调试按钮行
489489 btn_row = QHBoxLayout ()
490490 self ._refresh_btn = QPushButton (self .tr ("刷新" ))
491491 btn_row .addWidget (self ._refresh_btn )
492492 btn_row .addStretch ()
493+
494+ self ._debug_btn = QPushButton ("🐛 Debug" )
495+ self ._debug_btn .setCheckable (True )
496+ self ._debug_btn .setToolTip (self .tr ("开启/关闭远程调试 (debugpy)" ))
497+ btn_row .addWidget (self ._debug_btn )
498+
493499 left_layout .addLayout (btn_row )
494500
495501 left_panel .setMaximumWidth (200 )
@@ -585,6 +591,9 @@ def _connect_signals(self) -> None:
585591 self ._list .customContextMenuRequested .connect (self ._on_list_context_menu )
586592 self .connection_changed .connect (self ._on_conn_changed )
587593
594+ # 调试开关
595+ self ._debug_btn .toggled .connect (self ._toggle_debug )
596+
588597 # ── 连接状态 ────────────────────────────────────────
589598
590599 def set_connected (self , ok : bool ) -> None :
@@ -613,6 +622,52 @@ def _poll_connection_status(self) -> None:
613622 except Exception :
614623 pass
615624
625+ # ── 远程调试 ────────────────────────────────────────
626+
627+ _debug_active : bool = False
628+
629+ def _toggle_debug (self , enabled : bool ) -> None :
630+ """开启/关闭 debugpy 远程调试"""
631+ if enabled :
632+ self ._start_debug ()
633+ else :
634+ self ._stop_debug ()
635+
636+ def _start_debug (self ) -> None :
637+ """启动 debugpy 监听"""
638+ try :
639+ import debugpy
640+ # in_process_debug_adapter=True: 不启动子进程,直接在当前进程中运行 adapter
641+ # 解决 PyInstaller 打包后子进程找不到 Python/debugpy 的问题
642+ debugpy .listen (("0.0.0.0" , 5678 ), in_process_debug_adapter = True )
643+ PluginManagerWindow ._debug_active = True
644+ self ._debug_btn .setText ("🐛 Listening..." )
645+ self ._debug_btn .setStyleSheet ("background: #4caf50; color: white; font-weight: bold;" )
646+ self .statusBar ().showMessage (self .tr ("Debug server listening on port 5678, waiting for VS Code attach..." ))
647+ logger .info ("Debug server started on port 5678" )
648+ except ImportError as e :
649+ self ._debug_btn .setChecked (False )
650+ QMessageBox .warning (
651+ self , "Debug" ,
652+ f"debugpy import failed:\n { e } " ,
653+ )
654+ except Exception as e :
655+ self ._debug_btn .setChecked (False )
656+ QMessageBox .warning (self , "Debug" , f"Failed to start debugger:\n { e } " )
657+
658+ def _stop_debug (self ) -> None :
659+ """停止 debugpy"""
660+ try :
661+ import debugpy
662+ debugpy .stop_listen ()
663+ except Exception :
664+ pass
665+ PluginManagerWindow ._debug_active = False
666+ self ._debug_btn .setText ("🐛 Debug" )
667+ self ._debug_btn .setStyleSheet ("" )
668+ self .statusBar ().showMessage (self .tr ("Debug stopped" ))
669+ logger .info ("Debug server stopped" )
670+
616671 # ── 插件列表 ────────────────────────────────────────
617672
618673 # ── 插件列表 ────────────────────────────────────────
0 commit comments