{"id":2266,"date":"2022-08-30T15:23:26","date_gmt":"2022-08-30T15:23:26","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/01\/05\/what-ide-would-be-good-for-linux-kernel-driver-development-closed-collection-of-common-programming-errors\/"},"modified":"2022-08-30T15:23:26","modified_gmt":"2022-08-30T15:23:26","slug":"what-ide-would-be-good-for-linux-kernel-driver-development-closed-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2022\/08\/30\/what-ide-would-be-good-for-linux-kernel-driver-development-closed-collection-of-common-programming-errors\/","title":{"rendered":"What IDE would be good for linux kernel driver development [closed]-Collection of common programming errors"},"content":{"rendered":"<p>I&#8217;ve recently been hunting around this kind of problem space myself. Ive found crash and qemu\/kvm incredibly useful for the basic testing. People often tell you often not to test a kernel\/modules on a system with X, although I usually have a serial console and kdump setup to catch the vmcore to find out what exactly happened (more useful than just the log messages).<\/p>\n<p>My views on editors i&#8217;ve been using:<\/p>\n<h2>Eclipse<\/h2>\n<p>While java based, the ganymede version seems quite responsive even when dealing with larger C projects such as the kernel. The source manager integration seems nice. I deal with multiple (300+) trees of the kernel, so it gets a good work out.<\/p>\n<p>The Indexer does lag behind a bit, but after adjusting some startup parameters, it seemed to handle indexing of a few kernels with no particular problems. The auto-build functions of the C project didn&#8217;t suit the kernel well, but its quite easy to add an external &#8220;build&#8221; for something like the kernel. The downside is that the debugger does not deal with vmcore\/crashdumps, at least I couldn&#8217;t figure out how.<\/p>\n<p>The debugger could however connect a remote kernel under GDB, so this may be useful for those debugging remote live systems.<\/p>\n<h2>Vim\/Gvim<\/h2>\n<p>I hear people cry about VIM not being a suitable tool for editing large amounts of code, I find this simply untrue. Gvim along with cscope, NerdTree and ctags make working with large code bases quite efficient and easy to work with.<\/p>\n<p>A second tab open with &#8220;crash&#8221; (http:\/\/people.redhat.com\/anderson\/crash_whitepaper\/ ) running allowed me to inspect and copy names\/elements between the editor. The Eclipse debugger didnt open vmcore files, and I couldn&#8217;t figure a way to open a terminal with any decent size to be useful with crash.<\/p>\n<h2>Emacs<\/h2>\n<p>Not my favourite editor, but I&#8217;ve learned the basics of how it works, and it ends up being very similar to vim.<\/p>\n<h2>Kdevelop.<\/h2>\n<p>KDevelop indexer wouldn&#8217;t index more than 3 code trees. Didn&#8217;t investigate why. Code completion didnt work so well with a code base this large.<\/p>\n<p>None of these editors integrate &#8220;well&#8221; with kvm\/crash which is an area I&#8217;d like to see improved.<\/p>\n<p>Hope this helps.<\/p>\n<p id=\"rop\"><small>Originally posted 2014-01-05 09:40:52. <\/small><\/p>","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve recently been hunting around this kind of problem space myself. Ive found crash and qemu\/kvm incredibly useful for the basic testing. People often tell you often not to test a kernel\/modules on a system with X, although I usually have a serial console and kdump setup to catch the vmcore to find out what [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2266","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/2266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=2266"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/2266\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=2266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=2266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=2266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}