def on_legacyRemoteDebuggerAttach(self, request, args): if self.__waiting_for_authentication: self.send_response( request, success=False, message= 'legacyRemoteDebuggerAuthenticate request must be sent first.', ) self.set_exit() return try: debug_options = vspd.parse_debug_options(args['debugOptions']) if self.__redirect_output: debug_options.add('RedirectOutput') if vspd.DETACHED: try: pid = os.getpid() except AttributeError: pid = 0 major, minor, micro, release_level, serial = sys.version_info self.send_response( request, accepted=True, processId=pid, pythonMajor=major, pythonMinor=minor, pythonMicro=micro, ) vspd.attach_process_from_socket(self.__owned_socket, debug_options, report=True) vspd.mark_all_threads_for_break(vspd.STEPPING_ATTACH_BREAK) _attached.set() # Prevent from closing the socket, it will be used by debugger self.__owned_socket = None else: self.send_response( request, accepted=False, ) finally: self.set_exit()
def on_legacyRemoteDebuggerAttach(self, request, args): if self.__waiting_for_authentication: self.send_response( request, success=False, message='legacyRemoteDebuggerAuthenticate request must be sent first.', ) self.set_exit() return try: debug_options = vspd.parse_debug_options(args['debugOptions']) if self.__redirect_output: debug_options.add('RedirectOutput') if vspd.DETACHED: try: pid = os.getpid() except AttributeError: pid = 0 major, minor, micro, release_level, serial = sys.version_info self.send_response( request, accepted=True, processId=pid, pythonMajor=major, pythonMinor=minor, pythonMicro=micro, ) vspd.attach_process_from_socket(self.__owned_socket, debug_options, report = True) vspd.mark_all_threads_for_break(vspd.STEPPING_ATTACH_BREAK) _attached.set() # Prevent from closing the socket, it will be used by debugger self.__owned_socket = None else: self.send_response( request, accepted=False, ) finally: self.set_exit()
# Arguments are: # 1. Working directory. # 2. VS debugger port to connect to. # 3. GUID for the debug session. # 4. Debug options (as list of names - see enum PythonDebugOptions). # 5. '-m' or '-c' to override the default run-as mode. [optional] # 6. Startup script name. # 7. Script arguments. # change to directory we expected to start from os.chdir(sys.argv[1]) port_num = int(sys.argv[2]) debug_id = sys.argv[3] debug_options = vspd.parse_debug_options(sys.argv[4]) del sys.argv[0:5] # set run_as mode appropriately run_as = 'script' if sys.argv and sys.argv[0] == '-m': run_as = 'module' del sys.argv[0] if sys.argv and sys.argv[0] == '-c': run_as = 'code' del sys.argv[0] # preserve filename before we del sys filename = sys.argv[0] # fix sys.path to be the script file dir