tools/scripts/cdb/scriptmgr.py
aozhiwei 10de601297 1
2019-10-12 15:08:42 +08:00

54 lines
1.7 KiB
Python

import json
def getShortUrl(url):
return url.replace('http://localhost:7456/', '')
class ScriptMgr:
def __init__(self, tab):
self.frames = []
self.scripts = []
self.tab = tab
self.tab.set_listener('Debugger.scriptParsed', self.onScriptParsed)
self.tab.set_listener('Debugger.breakpointResolved', self.onBreakpointResolved)
self.tab.set_listener('Debugger.paused', self.onPaused)
self.tab.set_listener('Debugger.resumed', self.onResumed)
self.tab.set_listener('Debugger.scriptFailedToParse', self.onScriptFailedToParse)
def onScriptParsed(self, **kwargs):
self.scripts.append(kwargs)
def onBreakpointResolved(self, **kwargs):
print('onBreakpointResolved')
def onPaused(self, **kwargs):
print('onPaused')
self.frames = []
for frame in kwargs['callFrames']:
self.frames.append(frame)
def onResumed(self, **kwargs):
print('onResumed')
def onScriptFailedToParse(self, **kwargs):
print('onScriptFailedToParse', kwargs['url'])
def getUrl(self, filename):
for script in self.scripts:
if filename in script['url']:
return script['url']
return None
def dumpStack(self):
for frame in self.frames:
print('%30s %s:%d' %
(
frame['functionName'] + ':' +
str(json.loads(frame['callFrameId'])['ordinal']) + ':' +
str(json.loads(frame['callFrameId'])['injectedScriptId']),
getShortUrl(frame['url']),
frame['functionLocation']['lineNumber'],
)
)