{"id":34305,"date":"2023-05-30T11:12:35","date_gmt":"2023-05-30T18:12:35","guid":{"rendered":"https:\/\/sysprogs.com\/w\/?p=34305"},"modified":"2023-05-30T11:14:04","modified_gmt":"2023-05-30T18:14:04","slug":"announcing-visualkernel-4-1","status":"publish","type":"post","link":"https:\/\/sysprogs.com\/w\/announcing-visualkernel-4-1\/","title":{"rendered":"Announcing VisualKernel 4.1"},"content":{"rendered":"<p>Today we are pleased to announce another update to VisualKernel. It brings numerous improvements to the recently introduced tracing engine (see <a href=\"https:\/\/sysprogs.com\/VisualKernel\/history\/\">this page<\/a> for a full change log), but most importantly, it brings the ability to trace Linux kernel (or individual modules) without a regular network connection.<br \/>\n<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/05\/10-data.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-34306\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/05\/10-data.png\" alt=\"\" width=\"1391\" height=\"837\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<p>That&#8217;s right, even if your target doesn&#8217;t have a JTAG connector, is not compatible with KGDBoE and doesn&#8217;t support other means of debugging, you can still get pretty close to the regular debugging experience by selecting &#8220;Live Tracing&#8221; as the debug method:<br \/>\n<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/05\/06-traceonly.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-34307\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2023\/05\/06-traceonly.png\" alt=\"\" width=\"886\" height=\"693\" \/><\/a><\/p>\n<p>You can set tracepoints anywhere in the code, choose which variables to record, and then just run your code and analyze the collected data in real time. Tracepoints can dive into pointers, selectively capture relevant structure fields, and even support dynamic arrays (e.g. capturing [<strong>length<\/strong>] bytes from the <strong>buffer <\/strong>pointer in a <strong>sys_write <\/strong>syscall).<\/p>\n<p>Tracepoints store the captured data inside an internal buffer that is then read out over a regular network connection. They don&#8217;t need any special network driver support like KGDBoE does, won&#8217;t lock up your kernel due to deadlocks, and won&#8217;t mind multi-core systems at all.<\/p>\n<p>The new VisualKernel 4.1 allows you to export tracepoints into tracepoint sets to share them between projects, organize them in convenient folders, and features various improvements to the graph and table views (e.g. you can export the table reconstructed from the trace into a CSV file).<\/p>\n<p>You can find a detailed description of the kernel tracing functionality on <a href=\"https:\/\/sysprogs.com\/VisualKernel\/documentation\/tracing\/\">this page<\/a>, or follow a few tutorials listed <a href=\"https:\/\/sysprogs.com\/tutorials\/tag\/tracing\/\">here<\/a>.<\/p>\n<h2>Try it Out<\/h2>\n<p>You can download the latest VisualKernel <a href=\"https:\/\/sysprogs.com\/VisualKernel\/download\/\">here<\/a>. If you have any feedback, don\u2019t hesitate to reach us out via our\u00a0<a href=\"https:\/\/sysprogs.com\/support\/\">support form<\/a>\u00a0or the\u00a0<a href=\"https:\/\/sysprogs.com\/w\/forums\/forum\/visualkernel\">VisualKernel forum<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we are pleased to announce another update to VisualKernel. It brings numerous improvements to the recently introduced tracing engine (see this page for a full change log), but most importantly, it brings the ability to trace Linux kernel (or individual modules) without a regular network connection.<\/p>\n","protected":false},"author":703,"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\/34305"}],"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\/703"}],"replies":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/comments?post=34305"}],"version-history":[{"count":2,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/34305\/revisions"}],"predecessor-version":[{"id":34309,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/34305\/revisions\/34309"}],"wp:attachment":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/media?parent=34305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/categories?post=34305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/tags?post=34305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}