History

scripts/gdb: remove exception handling and refine print format

1. When we crash on a page, we want to check what happened on this page instead of skipping this page by try-except block. Thus, removing the try-except block. 2. Remove redundant comma and print the task name properly.

Kuan-Ying Lee committed 2 years ago

Commit e52ec6a1 parent 125e9982 files · +26 −35Browse files

Unified · Split

2 files
  1. scripts/gdb/linux/page_owner.py +25 −33
  2. scripts/gdb/linux/slab.py +1 −2
scripts/gdb/linux/page_owner.py+25−33
@@ -122,27 +122,24 @@ class DumpPageOwner(gdb.Command): · 121 unmodified lines
122 if not (page_ext['flags'] & (1 << PAGE_EXT_OWNER_ALLOCATED)):122 if not (page_ext['flags'] & (1 << PAGE_EXT_OWNER_ALLOCATED)):
123 gdb.write("page_owner is not allocated\n")123 gdb.write("page_owner is not allocated\n")
124 124
125 try:125 page_owner = self.get_page_owner(page_ext)
126 page_owner = self.get_page_owner(page_ext)126 gdb.write("Page last allocated via order %d, gfp_mask: 0x%x, pid: %d, tgid: %d (%s), ts %u ns, free_ts %u ns\n" %\
127 gdb.write("Page last allocated via order %d, gfp_mask: 0x%x, pid: %d, tgid: %d (%s), ts %u ns, free_ts %u ns\n" %\127 (page_owner["order"], page_owner["gfp_mask"],\
128 (page_owner["order"], page_owner["gfp_mask"],\128 page_owner["pid"], page_owner["tgid"], page_owner["comm"].string(),\
129 page_owner["pid"], page_owner["tgid"], page_owner["comm"],\129 page_owner["ts_nsec"], page_owner["free_ts_nsec"]))
130 page_owner["ts_nsec"], page_owner["free_ts_nsec"]))130 gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags']))
131 gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags']))131 if page_owner["handle"] == 0:
132 if page_owner["handle"] == 0:132 gdb.write('page_owner allocation stack trace missing\n')
133 gdb.write('page_owner allocation stack trace missing\n')133 else:
134 else:134 stackdepot.stack_depot_print(page_owner["handle"])
135 stackdepot.stack_depot_print(page_owner["handle"])
136 135
137 if page_owner["free_handle"] == 0:136 if page_owner["free_handle"] == 0:
138 gdb.write('page_owner free stack trace missing\n')137 gdb.write('page_owner free stack trace missing\n')
139 else:138 else:
140 gdb.write('page last free stack trace:\n')139 gdb.write('page last free stack trace:\n')
141 stackdepot.stack_depot_print(page_owner["free_handle"])140 stackdepot.stack_depot_print(page_owner["free_handle"])
142 if page_owner['last_migrate_reason'] != -1:141 if page_owner['last_migrate_reason'] != -1:
143 gdb.write('page has been migrated, last migrate reason: %s\n' % self.migrate_reason_names[page_owner['last_migrate_reason']])142 gdb.write('page has been migrated, last migrate reason: %s\n' % self.migrate_reason_names[page_owner['last_migrate_reason']])
144 except:
145 gdb.write("\n")
146 143
147 def read_page_owner(self):144 def read_page_owner(self):
148 pfn = self.min_pfn145 pfn = self.min_pfn
@@ -173,18 +170,13 @@ class DumpPageOwner(gdb.Command): · 24 unmodified lines
173 pfn += 1170 pfn += 1
174 continue171 continue
175 172
176 try:173 page_owner = self.get_page_owner(page_ext)
177 page_owner = self.get_page_owner(page_ext)174 gdb.write("Page allocated via order %d, gfp_mask: 0x%x, pid: %d, tgid: %d (%s), ts %u ns, free_ts %u ns\n" %\
178 gdb.write("Page allocated via order %d, gfp_mask: 0x%x, pid: %d, tgid: %d (%s), ts %u ns, free_ts %u ns\n" %\175 (page_owner["order"], page_owner["gfp_mask"],\
179 (page_owner["order"], page_owner["gfp_mask"],\176 page_owner["pid"], page_owner["tgid"], page_owner["comm"].string(),\
180 page_owner["pid"], page_owner["tgid"], page_owner["comm"],\177 page_owner["ts_nsec"], page_owner["free_ts_nsec"]))
181 page_owner["ts_nsec"], page_owner["free_ts_nsec"]))178 gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags']))
182 gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags']))179 stackdepot.stack_depot_print(page_owner["handle"])
183 stackdepot.stack_depot_print(page_owner["handle"])180 pfn += (1 << page_owner["order"])
184 pfn += (1 << page_owner["order"])
185 continue
186 except:
187 gdb.write("\n")
188 pfn += 1
189 181
190DumpPageOwner()182DumpPageOwner()
scripts/gdb/linux/slab.py+1−2
@@ -228,8 +228,7 @@ def slabtrace(alloc, cache_name): · 227 unmodified lines
228 nr_cpu = gdb.parse_and_eval('__num_online_cpus')['counter']228 nr_cpu = gdb.parse_and_eval('__num_online_cpus')['counter']
229 if nr_cpu > 1:229 if nr_cpu > 1:
230 gdb.write(" cpus=")230 gdb.write(" cpus=")
231 for i in loc['cpus']:231 gdb.write(','.join(str(cpu) for cpu in loc['cpus']))
232 gdb.write("%d," % i)
233 gdb.write("\n")232 gdb.write("\n")
234 if constants.LX_CONFIG_STACKDEPOT:233 if constants.LX_CONFIG_STACKDEPOT:
235 if loc['handle']:234 if loc['handle']: