Skip to content

Commit 965e561

Browse files
authored
support ThreadProfiling event and add tests (#59)
1 parent e1def80 commit 965e561

6 files changed

Lines changed: 8 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ The PML format is very complex so there are some features (unchecked in the list
169169
- [ ] PlugAndPlay
170170
- [x] QueryNameInformationFile
171171
- [ ] Profiling Operations
172-
- [ ] Thread Profiling
172+
- [x] Thread Profiling
173173
- [x] Process Profiling
174174
- [ ] Debug Output Profiling
175175

procmon_parser/logs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def _get_compatible_csv_detail_column(self, is_utc=True):
219219
if operation is ProcessOperation.Load_Image:
220220
details["Image Base"] = "0x{:x}".format(details["Image Base"])
221221
details["Image Size"] = "0x{:x}".format(details["Image Size"])
222-
elif operation is ProcessOperation.Thread_Exit:
222+
elif operation in [ProcessOperation.Thread_Exit, ProfilingOperation.Thread_Profiling]:
223223
details["User Time"] = Event._strftime_duration(details["User Time"])
224224
details["Kernel Time"] = Event._strftime_duration(details["Kernel Time"])
225225
elif operation in [

procmon_parser/stream_logs_detail_format.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ def get_profiling_event_details(io, metadata, event, extra_detail_io):
101101
private_bytes = read_u64(io)
102102
event.details["Private Bytes"] = private_bytes
103103
event.details["Working Set"] = working_set
104+
elif event.operation is ProfilingOperation.Thread_Profiling:
105+
event.details["User Time"] = read_u32(io)
106+
event.details["Kernel Time"] = read_u32(io)
107+
event.details["Context Switches"] = read_u32(io)
108+
event.path = f"Thread {event.tid}"
104109

105110

106111
def get_network_event_details(io, metadata, event, extra_detail_io):

tests/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ def csv_reader_windows10_64bit(csv_logs_windows10_64bit):
7575
('CompressedLogFileUTC64FilesystemCSV', 'CompressedLogFileUTC64FilesystemPML'),
7676
('CompressedLogFileUTC64ProcessCSV', 'CompressedLogFileUTC64ProcessPML'),
7777
('CompressedLogFileUTC64RegistryCSV', 'CompressedLogFileUTC64RegistryPML'),
78+
('CompressedLogfileUTC64ProfilingCSV', 'CompressedLogfileUTC64ProfilingPML'),
7879
('CompressedLogfileTests64bitUTCWindows1125H2CSV', 'CompressedLogfileTests64bitUTCWindows1125H2PML')])
7980
def specific_events_logs_readers(request):
8081
return get_csv_log_reader(decompress_resource(request.param[0])), \
26.1 KB
Binary file not shown.
143 KB
Binary file not shown.

0 commit comments

Comments
 (0)