(Обновление: ПИН, по сообщениям, не работает в WSL. Но для него не требуется счетчик перфораций, поэтому он по-прежнему полезен в виртуальных машинах и т. Д.)
Вы пытались PIN-код или SDE, который построен поверх PIN-кода и выполняет то, что вы хотите? https://software.intel.com/en-us/articles/intel-software-development-emulator
sde64 -mix -- ./my-program
сообщит вам, работает ли PIN-код, и может решить вашу проблему самостоятельно. Комбинация инструкций SDE осуществляется мнемоническим IIRC, возможно, не по назначению памяти по сравнению с src, но, по крайней мере, вы будете знать, что ПИН будет работать, прежде чем вы в любой момент впишетесь в написание собственного инструмента ПИН.
ПИНоснован на динамическом инструментарии времени выполнения, а не на счетчиках производительности. Вероятно, он даже не относится к SIGILL (не то, чтобы у WSL были проблемы с этим);он должен эмулировать lzcnt
на процессорах, где он декодируется как rep bsr
, и все в таком духе.
Так что я сомневаюсь, что PIN нуждается в большой поддержке ядра, помимо возможностей JIT (что требуется для Java и веб-браузеров JS, и это просто mmap(PROT_EXEC)
). Он может использовать ptrace, но если GDB работает под WSL, то, надеюсь, PIN будет.
См. Также Инструменты для подсчета количества различных типов инструкций в сборке x86 для создания таблицы динамического набора команд .
Related: Как определить количество машинных инструкций x86, выполняемых в программе на C? не зависит от WSL, но упоминает sde64 -mix
.