eric6/DebugClients/Python/DebugClientBase.py

changeset 7707
6abcf4275d0e
parent 7639
422fd05e9c91
child 7769
c9f64088224b
equal deleted inserted replaced
7706:0c6d32ec64f1 7707:6abcf4275d0e
186 self.writestream = None 186 self.writestream = None
187 self.errorstream = None 187 self.errorstream = None
188 self.pollingDisabled = False 188 self.pollingDisabled = False
189 189
190 self.callTraceEnabled = None 190 self.callTraceEnabled = None
191
192 self.disassembly = None
191 193
192 self.variant = 'You should not see this' 194 self.variant = 'You should not see this'
193 195
194 self.compile_command = codeop.CommandCompiler() 196 self.compile_command = codeop.CommandCompiler()
195 197
345 stack = self.currentThread.getStack() 347 stack = self.currentThread.getStack()
346 self.sendJsonCommand("ResponseStack", { 348 self.sendJsonCommand("ResponseStack", {
347 "stack": stack, 349 "stack": stack,
348 }) 350 })
349 351
352 elif method == "RequestDisassembly":
353 if self.disassembly is not None:
354 self.sendJsonCommand("ResponseDisassembly", self.disassembly)
355 else:
356 self.sendJsonCommand("ResponseDisassembly", {})
357
350 elif method == "RequestCapabilities": 358 elif method == "RequestCapabilities":
351 clientType = "Python3" 359 clientType = "Python3"
352 self.sendJsonCommand("ResponseCapabilities", { 360 self.sendJsonCommand("ResponseCapabilities", {
353 "capabilities": self.__clientCapabilities(), 361 "capabilities": self.__clientCapabilities(),
354 "clientType": clientType 362 "clientType": clientType
387 os.environ[key] = value 395 os.environ[key] = value
388 396
389 elif method == "RequestLoad": 397 elif method == "RequestLoad":
390 self._fncache = {} 398 self._fncache = {}
391 self.dircache = [] 399 self.dircache = []
400 self.disassembly = None
392 sys.argv = [] 401 sys.argv = []
393 self.__setCoding(params["filename"]) 402 self.__setCoding(params["filename"])
394 sys.argv.append(params["filename"]) 403 sys.argv.append(params["filename"])
395 sys.argv.extend(params["argv"]) 404 sys.argv.extend(params["argv"])
396 sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) 405 sys.path = self.__getSysPath(os.path.dirname(sys.argv[0]))
427 if code: 436 if code:
428 sys.setprofile(self.callTraceEnabled) 437 sys.setprofile(self.callTraceEnabled)
429 self.mainThread.run(code, self.debugMod.__dict__, debug=True) 438 self.mainThread.run(code, self.debugMod.__dict__, debug=True)
430 439
431 elif method == "RequestRun": 440 elif method == "RequestRun":
441 self.disassembly = None
432 sys.argv = [] 442 sys.argv = []
433 self.__setCoding(params["filename"]) 443 self.__setCoding(params["filename"])
434 sys.argv.append(params["filename"]) 444 sys.argv.append(params["filename"])
435 sys.argv.extend(params["argv"]) 445 sys.argv.extend(params["argv"])
436 sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) 446 sys.path = self.__getSysPath(os.path.dirname(sys.argv[0]))
462 if code: 472 if code:
463 self.mainThread.run(code, self.debugMod.__dict__, debug=False) 473 self.mainThread.run(code, self.debugMod.__dict__, debug=False)
464 474
465 elif method == "RequestCoverage": 475 elif method == "RequestCoverage":
466 from coverage import Coverage 476 from coverage import Coverage
477 self.disassembly = None
467 sys.argv = [] 478 sys.argv = []
468 self.__setCoding(params["filename"]) 479 self.__setCoding(params["filename"])
469 sys.argv.append(params["filename"]) 480 sys.argv.append(params["filename"])
470 sys.argv.extend(params["argv"]) 481 sys.argv.extend(params["argv"])
471 sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) 482 sys.path = self.__getSysPath(os.path.dirname(sys.argv[0]))
498 self.cover.save() 509 self.cover.save()
499 510
500 elif method == "RequestProfile": 511 elif method == "RequestProfile":
501 sys.setprofile(None) 512 sys.setprofile(None)
502 import PyProfile 513 import PyProfile
514 self.disassembly = None
503 sys.argv = [] 515 sys.argv = []
504 self.__setCoding(params["filename"]) 516 self.__setCoding(params["filename"])
505 sys.argv.append(params["filename"]) 517 sys.argv.append(params["filename"])
506 sys.argv.extend(params["argv"]) 518 sys.argv.extend(params["argv"])
507 sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) 519 sys.path = self.__getSysPath(os.path.dirname(sys.argv[0]))
868 "message": "", 880 "message": "",
869 }) 881 })
870 882
871 elif method == "RequestUTRun": 883 elif method == "RequestUTRun":
872 from DCTestResult import DCTestResult 884 from DCTestResult import DCTestResult
885 self.disassembly = None
873 self.testResult = DCTestResult(self, params["failfast"]) 886 self.testResult = DCTestResult(self, params["failfast"])
874 if self.cover: 887 if self.cover:
875 self.cover.start() 888 self.cover.start()
876 self.debugging = params["debug"] 889 self.debugging = params["debug"]
877 if params["debug"]: 890 if params["debug"]:
928 test.__module__.replace(".", os.sep) + ".py") 941 test.__module__.replace(".", os.sep) + ".py")
929 testCases.append( 942 testCases.append(
930 (test.id(), test.shortDescription(), filename) 943 (test.id(), test.shortDescription(), filename)
931 ) 944 )
932 return testCases 945 return testCases
946
947 def setDisassembly(self, disassembly):
948 """
949 Public method to store a disassembly of the code object raising an
950 exception.
951
952 @param disassembly dictionary containing the disassembly information
953 @type dict
954 """
955 self.disassembly = disassembly
933 956
934 def sendJsonCommand(self, method, params): 957 def sendJsonCommand(self, method, params):
935 """ 958 """
936 Public method to send a single command or response to the IDE. 959 Public method to send a single command or response to the IDE.
937 960

eric ide

mercurial