{"id":406,"date":"2017-03-17T16:46:57","date_gmt":"2017-03-17T16:46:57","guid":{"rendered":"http:\/\/halobates.de\/blog\/?p=406"},"modified":"2017-03-17T16:46:57","modified_gmt":"2017-03-17T16:46:57","slug":"intel-processor-trace-resources","status":"publish","type":"post","link":"http:\/\/halobates.de\/blog\/p\/406","title":{"rendered":"Intel Processor Trace resources"},"content":{"rendered":"<p>Intel Processor Trace (PT) can be used on modern Intel CPUs to trace execution. This page contains references for learning about and using Intel PT.<\/p>\n<p>Basic information:<\/p>\n<ul>\n<li>Intel <a href=\"https:\/\/software.intel.com\/sites\/default\/files\/managed\/a4\/60\/325384-sdm-vol-3abcd.pdf\">Software Developer&#8217;s Manual Vol 3<\/a> low level reference information on Processor Trace trace format and registers (Chapter 36)<\/li>\n<li><a href=\"http:\/\/halobates.de\/pt-tracing-summit15.pdf\">Intel Processor Trace on Linux<\/a> gives an overview of processor trace on Linux<\/li>\n<li>A <a href=\"https:\/\/sites.google.com\/site\/intelptmicrotutorial\/home\">tutorial web site<\/a> for PT that contains many references&nbsp;<\/li>\n<li><a href=\"http:\/\/myeventagenda.com\/sessions\/0B9F4191-1C29-408A-8B61-65D7520025A8\/7\/5\" rel=\"nofollow\" target=\"_blank\">Intel\u00ae Developer Forum 2015: Zoom-in on Your Code with Intel\u00ae Processor Trace and Supporting Tools<\/a>&nbsp;(find SPCS012)<\/li>\n<li><a href=\"http:\/\/intelstudios.edgesuite.net\/idf\/2014\/sf\/aep\/ARCS001\/ARCS001.html\" rel=\"nofollow\" target=\"_blank\"><span style=\"line-height:19.0909px\">Intel<\/span>\u00ae<span style=\"line-height:19.0909px\">&nbsp;Developer Forum 2014: Debug and Fine-grain Profiling with Intel<\/span>\u00ae<span style=\"line-height:19.0909px\">&nbsp;Processor Trace<\/span><\/a><\/li>\n<li><a href=\"http:\/\/events.linuxfoundation.org\/sites\/events\/files\/slides\/lcna13_kleen.pdf\"><span style=\"line-height:19.0909px\">Efficient and large scale program flow tracing in Linux<\/span><\/a><\/li>\n<\/ul>\n<p>Implementations<\/p>\n<ul>\n<li><a href=\"https:\/\/lwn.net\/Articles\/648154\/\">Adding processor trace to Linux<\/a> describes the <a href=\"https:\/\/perf.wiki.kernel.org\/index.php\/Main_Page\">Linux perf <\/a>Processor trace implementation.<\/li>\n<li><a href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/tree\/tools\/perf\/Documentation\/intel-pt.txt\">Reference documentation<\/a> for PT on Linux perf<\/li>\n<li><a href=\"https:\/\/github.com\/andikleen\/simple-pt\">simple-pt <\/a>is an alternative reference PT implementation. It is implemented on Linux, but can be also used as a starting point to implement PT on other OS.<\/li>\n<li>The GNU debugger <a href=\"https:\/\/sourceware.org\/gdb\/onlinedocs\/gdb\/Process-Record-and-Replay.html\">gdb<\/a> support PT on Linux for backward debugging<\/li>\n<li>Intel <a href=\"https:\/\/software.intel.com\/en-us\/intel-vtune-amplifier-xe\">VTune amplifier<\/a> supports PT for performance analysis<\/li>\n<li>A Windows <a href=\"https:\/\/software.intel.com\/en-us\/iss-2017-windbg-pt-user-guide-windows\">windbg processor trace<\/a> plugin for debugging on Windows with PT.<\/li>\n<li>A reference <a href=\"https:\/\/github.com\/01org\/processor-trace\">Processor Trace decode library<\/a>.<\/li>\n<li>A <a href=\"https:\/\/people.redhat.com\/anderson\/extensions.html\">plugin for Linux crash<\/a> to dump PT buffers (look for ptdump)<\/li>\n<\/ul>\n<p>JTAG support<\/p>\n<ul>\n<li>The Lauterbach JTAG debugger <a href=\"http:\/\/www2.lauterbach.com\/pdf\/training_ipt_trace.pdf\">supports PT<\/a><\/li>\n<li>Intel system studio supports <a href=\"https:\/\/software.intel.com\/en-us\/articles\/intel-system-studio-system-debugger-processor-trace-sample\">JTAG debugging with PT<\/a><\/li>\n<li>The <a href=\"https:\/\/www.asset-intertech.com\/products\/sourcepoint-intel\">SourcePoint for Intel <\/a>debugger support PT<\/li>\n<\/ul>\n<p>Other presentations<\/p>\n<ul>\n<li><a href=\"https:\/\/hsdm.dorsal.polymtl.ca\/system\/files\/10Dec2015_0.pdf\">Hardware tracing with Intel processor Trace<\/a><\/li>\n<\/ul>\n<p>Usages<\/p>\n<ul>\n<li>The hongfuzz fuzzer supports f<a href=\"https:\/\/github.com\/google\/honggfuzz\/blob\/master\/docs\/FeedbackDrivenFuzzing.md\">eedback fuzzing using PT<\/a><\/li>\n<li><a href=\"http:\/\/moflow.org\/Presentations\/Harnessing%20Intel%20Processor%20Trace%20on%20Windows%20for%20Vulnerability%20Discovery%20-%20rjohnson.pdf\">Harnessing Intel Processor Trace on Windows for vulnerability discovery<\/a><\/li>\n<\/ul>\n<p>Research papers using PT (subset):<\/p>\n<ul>\n<li><a href=\"http:\/\/dslab.epfl.ch\/pubs\/gist.pdf\">Failure Sketching: A technique for automated root cause analysis of in production failures<\/a><\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2017\/01\/griffin-asplos17.pdf\">Griffin: Guarding control flows using Intel Processor Trace<\/a><\/li>\n<li><a href=\"http:\/\/digital-library.theiet.org\/content\/journals\/10.1049\/joe.2016.0127\"><span class=\"keytitle\">Hardware-assisted instruction profiling and latency detection<\/span><\/a><\/li>\n<li><a href=\"http:\/\/www.research.ed.ac.uk\/portal\/files\/29396813\/PID4226263.pdf\">Inspector: Data Provenance using Intel Processor Trace<\/a><\/li>\n<li><a href=\"http:\/\/ipads.se.sjtu.edu.cn\/lib\/exe\/fetch.php?media=publications:flowguard.pdf\">Transparent and efficient CFI enforcement with Intel Processor Trace<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intel Processor Trace (PT) can be used on modern Intel CPUs to trace execution. This page contains references for learning about and using Intel PT. Basic information: Intel Software Developer&#8217;s Manual Vol 3 low level reference information on Processor Trace trace format and registers (Chapter 36) Intel Processor Trace on Linux gives an overview of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[7,14,18,17],"tags":[],"_links":{"self":[{"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/posts\/406"}],"collection":[{"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/comments?post=406"}],"version-history":[{"count":2,"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/posts\/406\/revisions"}],"predecessor-version":[{"id":408,"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/posts\/406\/revisions\/408"}],"wp:attachment":[{"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/media?parent=406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/categories?post=406"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/halobates.de\/blog\/wp-json\/wp\/v2\/tags?post=406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}