Я написал python скрипт для преобразования определенного вида трассировки в CTF. Тип события отображается, но поля внутри части «Содержимое» отображаются неправильно. У меня есть два поля, идентификатор и имя. Это функция log_event:
def log_event(self, ts, event_id, event_name, event_type):
self.resultfile.write(struct.pack("=Q", ts)) #timestamp
self.resultfile.write(struct.pack("=B", 0x31))
self.resultfile.write(struct.pack("=I", event_id)) # id
self.resultfile.write(event_name.encode(encoding='utf-8')) #name
self.resultfile.write(struct.pack("=B", 0x0)) # null terminate string
Структура части событий в файле метаданных выглядит следующим образом:
event {
name = "InterruptType";
id = 77;
stream_id = 0;
fields := struct {
integer { size = 32; align = 8; signed = 0; encoding = none; base = 10; } _id;
string _name;
};
};
Все события в файле метаданных имеют одинаковую структуру только с изменение имени и идентификатора.
Когда я открываю файл в трассировке компаса, поле «Содержимое» выглядит следующим образом:
Timestamp Channel CPU Event type Contents
05:30:00.000 000 00 channel0_0 76488448 TaskType id=0, name=
имя не отображается в некоторых и в некоторые из них отображаются в некоем двоичном формате, который непостижим. Кроме того, идентификаторы, которые отображаются неверно.