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
122122 if not (page_ext['flags'] & (1 << PAGE_EXT_OWNER_ALLOCATED)):
123123 gdb.write("page_owner is not allocated\n")
124124
125− try:
126− page_owner = self.get_page_owner(page_ext)
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" %\
128− (page_owner["order"], page_owner["gfp_mask"],\
129− page_owner["pid"], page_owner["tgid"], page_owner["comm"],\
130− page_owner["ts_nsec"], page_owner["free_ts_nsec"]))
131− gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags']))
132− if page_owner["handle"] == 0:
133− gdb.write('page_owner allocation stack trace missing\n')
134− else:
135− stackdepot.stack_depot_print(page_owner["handle"])
125+ 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+ (page_owner["order"], page_owner["gfp_mask"],\
128+ page_owner["pid"], page_owner["tgid"], page_owner["comm"].string(),\
129+ page_owner["ts_nsec"], page_owner["free_ts_nsec"]))
130+ gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags']))
131+ if page_owner["handle"] == 0:
132+ gdb.write('page_owner allocation stack trace missing\n')
133+ else:
134+ stackdepot.stack_depot_print(page_owner["handle"])
136135
137− if page_owner["free_handle"] == 0:
138− gdb.write('page_owner free stack trace missing\n')
139− else:
140− gdb.write('page last free stack trace:\n')
141− stackdepot.stack_depot_print(page_owner["free_handle"])
142− 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']])
144− except:
145− gdb.write("\n")
136+ if page_owner["free_handle"] == 0:
137+ gdb.write('page_owner free stack trace missing\n')
138+ else:
139+ gdb.write('page last free stack trace:\n')
140+ stackdepot.stack_depot_print(page_owner["free_handle"])
141+ if page_owner['last_migrate_reason'] != -1:
142+ gdb.write('page has been migrated, last migrate reason: %s\n' % self.migrate_reason_names[page_owner['last_migrate_reason']])
146143
147144 def read_page_owner(self):
148145 pfn = self.min_pfn
@@ -173,18 +170,13 @@ class DumpPageOwner(gdb.Command): · 24 unmodified lines
173170 pfn += 1
174171 continue
175172
176− try:
177− page_owner = self.get_page_owner(page_ext)
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" %\
179− (page_owner["order"], page_owner["gfp_mask"],\
180− page_owner["pid"], page_owner["tgid"], page_owner["comm"],\
181− page_owner["ts_nsec"], page_owner["free_ts_nsec"]))
182− gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags']))
183− stackdepot.stack_depot_print(page_owner["handle"])
184− pfn += (1 << page_owner["order"])
185− continue
186− except:
187− gdb.write("\n")
188− pfn += 1
173+ 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" %\
175+ (page_owner["order"], page_owner["gfp_mask"],\
176+ page_owner["pid"], page_owner["tgid"], page_owner["comm"].string(),\
177+ page_owner["ts_nsec"], page_owner["free_ts_nsec"]))
178+ gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags']))
179+ stackdepot.stack_depot_print(page_owner["handle"])
180+ pfn += (1 << page_owner["order"])
189181
190182 DumpPageOwner()
scripts/gdb/linux/slab.py+1−2
@@ -228,8 +228,7 @@ def slabtrace(alloc, cache_name): · 227 unmodified lines
228228 nr_cpu = gdb.parse_and_eval('__num_online_cpus')['counter']
229229 if nr_cpu > 1:
230230 gdb.write(" cpus=")
231− for i in loc['cpus']:
232− gdb.write("%d," % i)
231+ gdb.write(','.join(str(cpu) for cpu in loc['cpus']))
233232 gdb.write("\n")
234233 if constants.LX_CONFIG_STACKDEPOT:
235234 if loc['handle']: