pygdb now saves absolute breakpoint paths
[pygdb.git] / DbgTerminal.py
index afeca3de2d2cf1cccbddbbc3c0477d661782c056..5cc7b279e5e41f636c05ee8c95967a38309fe4e1 100644 (file)
@@ -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:
@@ -219,6 +237,24 @@ def quitHandler(*w):
        except:
                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):