1from xnu import * 2 3@lldb_command("showcoreanalyticsformatstr") 4def PrintCoreAnalyticsFormatStr(cmd_args=None): 5 """ Pretty prints the full format string for a core analyics event 6 Usage: showcoreanalyticsformatstr <event> 7 """ 8 if not cmd_args: 9 raise ArgumentError("Please specify an event.") 10 return 11 #event_ptr = kern.GetValueFromAddress(cmd_args[0], "struct _ca_event *").GetSBValue().GetValueAsUnsigned() 12 #print(event_ptr) 13 event = kern.GetValueFromAddress(cmd_args[0], "struct _ca_event *") 14 event_name = str(event.format_str) 15 print(event_name) 16 curr = event.format_str.GetSBValue().GetValueAsUnsigned() 17 offset = len(event_name) + 1 18 while True: 19 val = kern.GetValueFromAddress(curr + offset, "char *") 20 as_string = str(val) 21 if len(as_string) == 0: 22 break 23 offset = offset + len(as_string) + 1 24 print(as_string) 25