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