X-Git-Url: https://git.sthu.org/?p=pygdb.git;a=blobdiff_plain;f=DbgTerminal.py;h=9d08866820acc3083048b589c78f4b54eacc30f2;hp=afeca3de2d2cf1cccbddbbc3c0477d661782c056;hb=HEAD;hpb=3c94180482e4ccd256f087ff182278f083a94276 diff --git a/DbgTerminal.py b/DbgTerminal.py index afeca3d..9d08866 100644 --- a/DbgTerminal.py +++ b/DbgTerminal.py @@ -62,6 +62,24 @@ class DbgTerminal (vte.Terminal): os.kill(self.childpid, 15); self.childpid = None + def getClientExecuteable(self): + return string.split(self.clientCmd)[0] + + + def toAbsPath(self, path): + """convert path to an absolute path relative to the client + executable we debug.""" + + #Current working dir + pwd = os.getcwd() + "/" + + #executeable path + client = self.getClientExecuteable() + client = relToAbsPath(pwd, client) + + return relToAbsPath(client, path) + + def checkActivityChanged(self): try: @@ -82,6 +100,8 @@ class DbgTerminal (vte.Terminal): for cb in self.gotInactiveCallback: cb(status, param) except Exception, e: + import traceback + traceback.print_exc() print e return True @@ -181,6 +201,9 @@ class DbgTerminal (vte.Terminal): def setStepin(self): raise NotImplementedError() + def setStepout(self): + raise NotImplementedError() + def setQuit(self): raise NotImplementedError() @@ -196,6 +219,9 @@ class DbgTerminal (vte.Terminal): def listCodeSnippet(self): raise NotImplementedError() + def getBacktrace(self): + raise NotImplementedError() + def waitForPrompt(self, his): raise NotImplementedError() @@ -220,6 +246,25 @@ def quitHandler(*w): pass +def relToAbsPath(absfile, relfile): + """When an absfile is given and a relfile is given by + relative paths relative to absfile, determine the abs + path of relfile""" + + #Get directories except for "." parts + relsplit = filter(lambda x: x!=".", string.split(relfile, os.sep)) + #Get the directories of absfile withouth the trailing filename + abssplit = string.split(absfile, os.sep)[:-1] + + #Determine number of ".." and remove them + up=0 + while relsplit[0] == "..": + up += 1 + del relsplit[0] + del abssplit[-1] + + return string.join(abssplit + relsplit, os.sep) + class DbgWindow (gtk.Window):