[kgtp] r1001 committed - Update format.

  • From: kgtp@xxxxxxxxxxxxxx
  • To: kgtp@xxxxxxxxxxxxx
  • Date: Wed, 28 Mar 2012 16:37:38 +0000

Revision: 1001
Author:   teawater
Date:     Wed Mar 28 09:37:04 2012
Log:      Update format.

http://code.google.com/p/kgtp/source/detail?r=1001

Modified:
 /trunk/add-ons/hotcode.py

=======================================
--- /trunk/add-ons/hotcode.py   Wed Mar 28 09:27:51 2012
+++ /trunk/add-ons/hotcode.py   Wed Mar 28 09:37:04 2012
@@ -11,91 +11,20 @@

 debug_dir = "/usr/lib/debug/"

-from operator import itemgetter
-def dict_sort(d, reverse=False):
-       #proposed in PEP 265, using  the itemgetter
-       return sorted(d.iteritems(), key=itemgetter(1), reverse=True)
-
-def sigint_handler(num, e):
-       hotcode_show()
-       try:
-               s = raw_input('Continue? (yes)')
-       except:
-               s = 'y'
-       finally:
-               if s[0:1] != 'n' and s[0:1] != 'N':
-                       return;
-       #gdb.execute("inferior 1")
-       try:
-               gdb.execute("tfind -1", True, False)
-               gdb.execute("target remote /sys/kernel/debug/gtp", True, False)
-               gdb.execute("set disconnected-tracing off", True, False)
-       except:
- print "Try to stop GTP got error, please use command \"sudo rmmod gtp.ko\" stop it."
-       exit(1);
-
-def add_inferior():
-       fid = gdb.execute("add-inferior", False, True)
-       if fid.find("Added inferior ") != 0:
-               return -1
-       fid = int(fid[len("Added inferior "):])
-       return fid
-
-def get_addr_range_list(fun):
-       buf = gdb.execute("info line "+fun, False, True)
-       line_list = buf.split(os.linesep)
-       ret = []
-       begin = -1
-       end = -1
-       for line in line_list:
-               addr_begin = line.find("starts at address ")
-               if addr_begin >= 0:
-                       line = line[addr_begin + len("starts at address "):]
-                       addr_end = line.find(" <"+fun)
-                       if addr_end >= 0:
-                               begin = int(line[:addr_end], 0)
-                               line = line[addr_end + len(" <"+fun):]
-               addr_begin = line.find("ends at ")
-               if addr_begin >= 0:
-                       line = line[addr_begin + len("ends at "):]
-                       addr_end = line.find(" <"+fun)
-                       if addr_end > 0:
-                               end = int(line[:addr_end], 0)
-                               if begin != -1:
-                                       ret.append([begin, end])
-                               begin = -1
-                               end = -1
-
-       if len(ret) > 0:
-               buf = gdb.execute("disassemble "+fun, False, True)
-               line_list = buf.split(os.linesep)
-               line_list.reverse()
-               end = 0
-               for line in line_list:
-                       addr_begin = line.find("0x")
-                       if addr_begin >= 0:
-                               line = line[addr_begin:]
-                               addr_end = line.find(" <+")
-                               if addr_end > 0:
-                                       end = int(line[:addr_end], 0) + 1
-                                       break
-               if end != 0:
-                       offset = 0
-                       for c in ret:
-                               if c[1] < end:
-                                       if offset == 0 or offset > (end - c[1]):
-                                               offset = end - c[1]
-                       for c in ret:
-                               c[1] += offset
-
-       return ret
-
 #0 inferior_id  1 dir_name 2 kernel_list 3 user_list
 #list 0 function_list 1 file_list 2 line_list
 task_list = {}
 no_task = False
 kernel_hotcode_list = ({},{},{})

+#--------------------------------------------------------------------------------------------------
+#For signal handler
+
+from operator import itemgetter
+def dict_sort(d, reverse=False):
+       #proposed in PEP 265, using  the itemgetter
+       return sorted(d.iteritems(), key=itemgetter(1), reverse=True)
+
 #info[0] line_num, info[1] file_name, info[2] function_name
 def add_info_to_code_list(info, code_list):
        #function_list
@@ -156,6 +85,33 @@
                        hotcode_show_code_list("Hotest line", 
task_list[pid][3][2])
                        print

+def sigint_handler(num, e):
+       hotcode_show()
+       try:
+               s = raw_input('Continue? (yes)')
+       except:
+               s = 'y'
+       finally:
+               if s[0:1] != 'n' and s[0:1] != 'N':
+                       return;
+       #gdb.execute("inferior 1")
+       try:
+               gdb.execute("tfind -1", True, False)
+               gdb.execute("target remote /sys/kernel/debug/gtp", True, False)
+               gdb.execute("set disconnected-tracing off", True, False)
+       except:
+ print "Try to stop GTP got error, please use command \"sudo rmmod gtp.ko\" stop it."
+       exit(1);
+#--------------------------------------------------------------------------------------------------
+#init
+
+def add_inferior():
+       fid = gdb.execute("add-inferior", False, True)
+       if fid.find("Added inferior ") != 0:
+               return -1
+       fid = int(fid[len("Added inferior "):])
+       return fid
+
 gdb.execute("set target-async on", True, False)
 gdb.execute("set pagination off", True, False)
 gdb.execute("set confirm off", True, False)
@@ -248,6 +204,55 @@
                gdb.execute("inferior 1")
        task_list[pid] = (fid, user_dir, ({},{},{}), ({},{},{}))

+def get_addr_range_list(fun):
+       buf = gdb.execute("info line "+fun, False, True)
+       line_list = buf.split(os.linesep)
+       ret = []
+       begin = -1
+       end = -1
+       for line in line_list:
+               addr_begin = line.find("starts at address ")
+               if addr_begin >= 0:
+                       line = line[addr_begin + len("starts at address "):]
+                       addr_end = line.find(" <"+fun)
+                       if addr_end >= 0:
+                               begin = int(line[:addr_end], 0)
+                               line = line[addr_end + len(" <"+fun):]
+               addr_begin = line.find("ends at ")
+               if addr_begin >= 0:
+                       line = line[addr_begin + len("ends at "):]
+                       addr_end = line.find(" <"+fun)
+                       if addr_end > 0:
+                               end = int(line[:addr_end], 0)
+                               if begin != -1:
+                                       ret.append([begin, end])
+                               begin = -1
+                               end = -1
+
+       if len(ret) > 0:
+               buf = gdb.execute("disassemble "+fun, False, True)
+               line_list = buf.split(os.linesep)
+               line_list.reverse()
+               end = 0
+               for line in line_list:
+                       addr_begin = line.find("0x")
+                       if addr_begin >= 0:
+                               line = line[addr_begin:]
+                               addr_end = line.find(" <+")
+                               if addr_end > 0:
+                                       end = int(line[:addr_end], 0) + 1
+                                       break
+               if end != 0:
+                       offset = 0
+                       for c in ret:
+                               if c[1] < end:
+                                       if offset == 0 or offset > (end - c[1]):
+                                               offset = end - c[1]
+                       for c in ret:
+                               c[1] += offset
+
+       return ret
+
 def get_ignore_str(function):
        ret = ""
        try:
@@ -508,6 +513,9 @@
 #Connect to pipe
 gdb.execute("target tfile /sys/kernel/debug/gtpframe_pipe")

+#--------------------------------------------------------------------------------------------------
+#cycle
+
 def get_line_from_sym(sym):
        sym = sym.rstrip(os.linesep)


Other related posts:

  • » [kgtp] r1001 committed - Update format. - kgtp