{"id":33968,"date":"2023-03-10T12:22:54","date_gmt":"2023-03-10T20:22:54","guid":{"rendered":"https:\/\/sysprogs.com\/w\/?p=33968"},"modified":"2023-03-10T12:22:54","modified_gmt":"2023-03-10T20:22:54","slug":"introducing-advanced-linux-kernel-tracing","status":"publish","type":"post","link":"https:\/\/sysprogs.com\/w\/introducing-advanced-linux-kernel-tracing\/","title":{"rendered":"Introducing Advanced Linux Kernel Tracing"},"content":{"rendered":"<p>Today we are proudly releasing VisualKernel 4.0 that introduces a huge usability improvement to kernel debugging workflows.<\/p>\n<p>The <span class=\"ILfuVd\" lang=\"en\"><span class=\"hgKElc\">Achilles&#8217; heel of kernel debugging is trying to make sense of a complex live system running many operations simultaneously. Breakpoints and stepping provide some insights, but having the entire system stopped in the debugger often has side effects and breaks unexpected things.<\/span><\/span><\/p>\n<p>VisualKernel 4.0 fixes this with Live Tracing &#8211; a new mechanism that allows quickly capturing, recording and reviewing arbitrary data at any point in time that could be interesting: <a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/03\/graph.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-33969\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/03\/graph.png\" alt=\"\" width=\"1287\" height=\"885\" \/><\/a><!--more-->Live Tracing logic runs fully on the target and sends the collected data to VisualKernel via a network connection, so it doesn&#8217;t introduce any latency, and doesn&#8217;t lock the target while the data is collected.<\/p>\n<p>You can use Live Tracing to trace:<\/p>\n<ul>\n<li>Named tracepoints defined throughout the Linux kernel<\/li>\n<li>Any function in the kernel, or your module using <strong>ftrace<\/strong><\/li>\n<li>Any other location with code using <strong>kprobe<\/strong><\/li>\n<\/ul>\n<p>Each tracepoint can be easily configured to capture any subset of data, from a few fields or global variables, to the entire variable-sized buffers or arrays:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/03\/08-captured.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-33970\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/03\/08-captured.png\" alt=\"\" width=\"1287\" height=\"885\" \/><\/a>Captured data is automatically saved to trace reports, that can be reviewed later. You can also configure custom table or graph views to quickly browse through series of similarly looking events, and find the relevant parts:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/03\/10-drag.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-33971\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/03\/10-drag.png\" alt=\"\" width=\"1287\" height=\"885\" \/><\/a>Tracepoints can be added via the new <strong>Debug-&gt;Windows-&gt;Tracepoints<\/strong> tool window, or by using the tracepoint bar on the left side of the text editor.<\/p>\n<h2>Try it out<\/h2>\n<p>You can download the new VisualKernel 4.0 <a href=\"http:\/\/visualkernel.com\/download\">here<\/a>. Don&#8217;t hesitate to reach out to us with your feedback and we will be happy to make it even better!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we are proudly releasing VisualKernel 4.0 that introduces a huge usability improvement to kernel debugging workflows. The Achilles&#8217; heel of kernel debugging is trying to make sense of a complex live system running many operations simultaneously. Breakpoints and stepping provide some insights, but having the entire system stopped in the debugger often has side &hellip; <a href=\"https:\/\/sysprogs.com\/w\/introducing-advanced-linux-kernel-tracing\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Introducing Advanced Linux Kernel Tracing<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/33968"}],"collection":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/comments?post=33968"}],"version-history":[{"count":1,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/33968\/revisions"}],"predecessor-version":[{"id":33972,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/33968\/revisions\/33972"}],"wp:attachment":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/media?parent=33968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/categories?post=33968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/tags?post=33968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}