CINXE.COM
DevTools - FreeBSD Wiki
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta name="robots" content="index,nofollow"> <title>DevTools - FreeBSD Wiki</title> <script type="text/javascript" src="/moin_static1911/common/js/common.js"></script> <script type="text/javascript"> <!-- var search_hint = "Search"; //--> </script> <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/moin_static1911/modern/css/common.css"> <link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="/moin_static1911/modern/css/screen.css"> <link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="/moin_static1911/modern/css/print.css"> <link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="/moin_static1911/modern/css/projection.css"> <!-- css only for MS IE6/IE7 browsers --> <!--[if lt IE 8]> <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/moin_static1911/modern/css/msie.css"> <![endif]--> <link rel="alternate" title="FreeBSD Wiki: DevTools" href="/action/rss_rc/DevTools?diffs=1&show_att=1&action=rss_rc&unique=0&page=DevTools&ddiffs=1" type="application/rss+xml"> <link rel="Start" href="/FrontPage"> <link rel="Alternate" title="Wiki Markup" href="/action/raw/DevTools?action=raw"> <link rel="Alternate" media="print" title="Print View" href="/action/print/DevTools?action=print"> <link rel="Search" href="/FindPage"> <link rel="Index" href="/TitleIndex"> <link rel="Glossary" href="/WordIndex"> <link rel="Help" href="/HelpOnFormatting"> </head> <body lang="en" dir="ltr"> <div id="header"> <div id="logo"><a href="/FrontPage"><img src="/logo-full-thumb.png" alt="Logo"></a></div> <form id="searchform" method="get" action="/DevTools"> <div> <input type="hidden" name="action" value="fullsearch"> <input type="hidden" name="context" value="180"> <label for="searchinput">Search:</label> <input id="searchinput" type="text" name="value" value="" size="20" onfocus="searchFocus(this)" onblur="searchBlur(this)" onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search"> <input id="titlesearch" name="titlesearch" type="submit" value="Titles" alt="Search Titles"> <input id="fullsearch" name="fullsearch" type="submit" value="Text" alt="Search Full Text"> </div> </form> <script type="text/javascript"> <!--// Initialize search form var f = document.getElementById('searchform'); f.getElementsByTagName('label')[0].style.display = 'none'; var e = document.getElementById('searchinput'); searchChange(e); searchBlur(e); //--> </script> <ul id="username"><li><a href="/action/login/DevTools?action=login" id="login" rel="nofollow">Login</a></li></ul> <div id="locationline"> <ul id="pagelocation"> <li><a href="/DevTools">DevTools</a></li> </ul> </div> <ul id="navibar"> <li class="wikilink"><a href="/RecentChanges">RecentChanges</a></li><li class="wikilink"><a href="/FindPage">FindPage</a></li><li class="wikilink"><a href="/HelpContents">HelpContents</a></li><li class="current"><a href="/DevTools">DevTools</a></li> </ul> <div id="pageline"><hr style="display:none;"></div> <ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li class="toggleCommentsButton" style="display:none;"><a href="#" class="nbcomment" onClick="toggleComments();return false;">Comments</a></li><li><a class="nbinfo" href="/action/info/DevTools?action=info" rel="nofollow">Info</a></li><li><a class="nbattachments" href="/action/AttachFile/DevTools?action=AttachFile" rel="nofollow">Attachments</a></li><li> <form class="actionsmenu" method="GET" action="/DevTools"> <div> <label>More Actions:</label> <select name="action" onchange="if ((this.selectedIndex != 0) && (this.options[this.selectedIndex].disabled == false)) { this.form.submit(); } this.selectedIndex = 0;"> <option value="raw">Raw Text</option> <option value="print">Print View</option> <option value="RenderAsDocbook">Render as Docbook</option> <option value="refresh">Delete Cache</option> <option value="show" disabled class="disabled">------------------------</option> <option value="SpellCheck">Check Spelling</option> <option value="LikePages">Like Pages</option> <option value="LocalSiteMap">Local Site Map</option> <option value="show" disabled class="disabled">------------------------</option> <option value="RenamePage" disabled class="disabled">Rename Page</option> <option value="DeletePage" disabled class="disabled">Delete Page</option> <option value="show" disabled class="disabled">------------------------</option> <option value="show" disabled class="disabled">Subscribe User</option> <option value="show" disabled class="disabled">------------------------</option> <option value="show" disabled class="disabled">Remove Spam</option> <option value="show" disabled class="disabled">Revert to this revision</option> <option value="PackagePages">Package Pages</option> <option value="SyncPages">Sync Pages</option> <option value="show" disabled class="disabled">------------------------</option> <option value="Load">Load</option> <option value="Save">Save</option> <option value="SlideShow">SlideShow</option> </select> <input type="submit" value="Do"> </div> <script type="text/javascript"> <!--// Init menu actionsMenuInit('More Actions:'); //--> </script> </form> </li></ul> </div> <div id="page" lang="en" dir="ltr"> <div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span> <span class="anchor" id="line-1"></span><p class="line867"> <h3 id="Various_utilities.2C_that_make_FreeBSD_developer_life_easier">Various utilities, that make FreeBSD developer life easier</h3> <span class="anchor" id="line-2"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-3"></span><span class="anchor" id="line-4"></span><p class="line874">This page has been created with the intention of exchanging <span class="anchor" id="line-5"></span>opinions on which tools help you to improve your work on <span class="anchor" id="line-6"></span>FreeBSD source tree. It shares some good development habits as <span class="anchor" id="line-7"></span>well. <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line867"><strong>Building binaries:</strong> <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><ul><li><p class="line891"><tt class="backtick">make(1)</tt> <span class="anchor" id="line-12"></span><ul><li><p class="line891"><tt class="backtick">/usr/share/mk</tt> <span class="anchor" id="line-13"></span><ul><li style="list-style-type:none">Provides FreeBSD-specific and general BSDmakefile libraries, which assist in building executables, libraries, managing installation, manual pages, etc. <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span></li></ul></li></ul></li></ul><p class="line867"><strong>Source code editing:</strong> <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><ul><li><p class="line891"><tt class="backtick">nvi(1)</tt> <span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span></li><li class="gap"><p class="line891"><tt class="backtick">editors/vim</tt> <span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><ul><li><p class="line891"><tt class="backtick">/usr/src/tools/tools/editing/freebsd.vim</tt> <span class="anchor" id="line-22"></span><ul><li style="list-style-type:none">Provides FreeBSD-specific settings for ViM <span class="anchor" id="line-23"></span><span class="anchor" id="line-24"></span></li></ul><p class="line891"><put some macros here> <span class="anchor" id="line-25"></span><span class="anchor" id="line-26"></span></li></ul></li><li class="gap"><p class="line891"><tt class="backtick">editors/emacs</tt> <span class="anchor" id="line-27"></span><span class="anchor" id="line-28"></span><ul><li><p class="line891"><tt class="backtick">/usr/src/tools/tools/editing/freebsd.el</tt> <span class="anchor" id="line-29"></span><ul><li style="list-style-type:none">Provides FreeBSD-specific settings for Emacs <span class="anchor" id="line-30"></span><span class="anchor" id="line-31"></span></li></ul><p class="line891"><put some macros here> <span class="anchor" id="line-32"></span><span class="anchor" id="line-33"></span></li></ul></li><li class="gap"><p class="line891"><tt class="backtick">editors/jed</tt> <span class="anchor" id="line-34"></span><ul><li>Provides very nice syntax highlighting. <span class="anchor" id="line-35"></span><span class="anchor" id="line-36"></span></li></ul></li></ul><p class="line867"><strong>Source code reading:</strong> <span class="anchor" id="line-37"></span><span class="anchor" id="line-38"></span><ul><li><p class="line891"><tt class="backtick">devel/ctags</tt> <span class="anchor" id="line-39"></span><span class="anchor" id="line-40"></span><ul><li style="list-style-type:none">Extended ctags <span class="anchor" id="line-41"></span><span class="anchor" id="line-42"></span>See if these are very different from typical tags.. <span class="anchor" id="line-43"></span><span class="anchor" id="line-44"></span></li></ul></li><li class="gap"><p class="line891"><tt class="backtick">devel/cscope</tt> <span class="anchor" id="line-45"></span><ul><li style="list-style-type:none">Lets you to quickly move between source code <span class="anchor" id="line-46"></span>files. It builds a database of tags (similar to ctags), which <span class="anchor" id="line-47"></span>is used later to jump between function prototypes/definitions. <span class="anchor" id="line-48"></span><span class="anchor" id="line-49"></span><p class="line862">It can be easily integrated with vim(1) editor as well as Emacs (xcscope.el can be chosen as an option at <tt class="backtick">cscope</tt> installation time). <span class="anchor" id="line-50"></span><span class="anchor" id="line-51"></span></li></ul></li><li class="gap"><p class="line891"><tt class="backtick">devel/cscout</tt> <span class="anchor" id="line-52"></span><ul><li style="list-style-type:none"><p class="line891"><a href="/DiomidisSpinellis/CScout">CScout</a> Analyzes source code and lets you to start local WWW server. <span class="anchor" id="line-53"></span>Once it's done, you can move through your source-code base <span class="anchor" id="line-54"></span>in a Web browser; it provides call graph generation and other <span class="anchor" id="line-55"></span>enhancements. <span class="anchor" id="line-56"></span><span class="anchor" id="line-57"></span></li></ul></li><li class="gap"><p class="line891"><tt class="backtick">devel/global</tt> <span class="anchor" id="line-58"></span><ul><li style="list-style-type:none">GNU GLOBAL is a source code tagging system (similar to ctags). <span class="anchor" id="line-59"></span>It is independent from any editor, although many have plugins available. <span class="anchor" id="line-60"></span>It also can differentiate between symbol definitions and references. <span class="anchor" id="line-61"></span><span class="anchor" id="line-62"></span></li></ul></li></ul><p class="line867"><strong>Source code reading online:</strong> <span class="anchor" id="line-63"></span><span class="anchor" id="line-64"></span><ul><li><p class="line891"><a class="http" href="http://fxr.watson.org">http://fxr.watson.org</a> <span class="anchor" id="line-65"></span><ul><li style="list-style-type:none">Cross-referenced source code of various open source operating systems indexed in clickable manner. <span class="anchor" id="line-66"></span><span class="anchor" id="line-67"></span><span class="anchor" id="line-68"></span></li></ul></li><li class="gap"><p class="line891"><a class="http" href="http://BXR.SU/">BXR.SU — Super User's BSD Cross Reference</a> <span class="anchor" id="line-69"></span><ul><li style="list-style-type:none"><p class="line862">The same, but <a class="http" href="http://www.freebsd.org/news/status/report-2013-01-2013-03.html#BXR.SU-%E2%80%94-Super-User%27s-BSD-Cross-Reference">done differently</a> (with OpenGrok software) <span class="anchor" id="line-70"></span><span class="anchor" id="line-71"></span></li></ul></li></ul><p class="line867"><strong>Code documenting:</strong> <span class="anchor" id="line-72"></span><ul><li><p class="line891"><tt class="backtick">/usr/src/tools/kerneldoc/subsys/</tt> <span class="anchor" id="line-73"></span><ul><li style="list-style-type:none"><p class="line862">Doxygen scripts. You can see HTML result here: <a class="http" href="http://www.leidinger.net/FreeBSD/dox/">http://www.leidinger.net/FreeBSD/dox/</a>, but please <span class="anchor" id="line-74"></span>don't mirror this site. Index sources by yourself. <span class="anchor" id="line-75"></span><span class="anchor" id="line-76"></span></li></ul></li></ul><p class="line867"><strong>Additional tools:</strong> <span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></span><ul><li><p class="line891"><tt class="backtick">textproc/diffstat</tt> <span class="anchor" id="line-79"></span><span class="anchor" id="line-80"></span><ul><li style="list-style-type:none">lets you to see a statistics of a patch in terms <span class="anchor" id="line-81"></span>of inserted/deleted/changed lines. It's similar to what you see <span class="anchor" id="line-82"></span>on git-related mailing lists. <span class="anchor" id="line-83"></span><span class="anchor" id="line-84"></span></li></ul></li></ul><p class="line867"><em> <span class="anchor" id="line-85"></span>If you're currently reading this page and you use a tool that isn't mentioned <span class="anchor" id="line-86"></span>here but improves your code-writing tasks, skills, either update the page or let us <span class="anchor" id="line-87"></span>know. <span class="anchor" id="line-88"></span></em> <span class="anchor" id="line-89"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">DevTools (last edited 2024-02-16T04:16:07+0000 by <span title="CollinFunk"><a class="nonexistent" href="/CollinFunk" title="CollinFunk">CollinFunk</a></span>)</p> <div id="pagebottom"></div> </div> <div id="footer"> <ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li class="toggleCommentsButton" style="display:none;"><a href="#" class="nbcomment" onClick="toggleComments();return false;">Comments</a></li><li><a class="nbinfo" href="/action/info/DevTools?action=info" rel="nofollow">Info</a></li><li><a class="nbattachments" href="/action/AttachFile/DevTools?action=AttachFile" rel="nofollow">Attachments</a></li><li> <form class="actionsmenu" method="GET" action="/DevTools"> <div> <label>More Actions:</label> <select name="action" onchange="if ((this.selectedIndex != 0) && (this.options[this.selectedIndex].disabled == false)) { this.form.submit(); } this.selectedIndex = 0;"> <option value="raw">Raw Text</option> <option value="print">Print View</option> <option value="RenderAsDocbook">Render as Docbook</option> <option value="refresh">Delete Cache</option> <option value="show" disabled class="disabled">------------------------</option> <option value="SpellCheck">Check Spelling</option> <option value="LikePages">Like Pages</option> <option value="LocalSiteMap">Local Site Map</option> <option value="show" disabled class="disabled">------------------------</option> <option value="RenamePage" disabled class="disabled">Rename Page</option> <option value="DeletePage" disabled class="disabled">Delete Page</option> <option value="show" disabled class="disabled">------------------------</option> <option value="show" disabled class="disabled">Subscribe User</option> <option value="show" disabled class="disabled">------------------------</option> <option value="show" disabled class="disabled">Remove Spam</option> <option value="show" disabled class="disabled">Revert to this revision</option> <option value="PackagePages">Package Pages</option> <option value="SyncPages">Sync Pages</option> <option value="show" disabled class="disabled">------------------------</option> <option value="Load">Load</option> <option value="Save">Save</option> <option value="SlideShow">SlideShow</option> </select> <input type="submit" value="Do"> </div> <script type="text/javascript"> <!--// Init menu actionsMenuInit('More Actions:'); //--> </script> </form> </li></ul> <ul id="credits"> <li><a href="http://moinmo.in/" title="This site uses the MoinMoin Wiki software.">MoinMoin Powered</a></li><li><a href="http://moinmo.in/Python" title="MoinMoin is written in Python.">Python Powered</a></li><li><a href="http://moinmo.in/GPL" title="MoinMoin is GPL licensed.">GPL licensed</a></li><li><a href="http://validator.w3.org/check?uri=referer" title="Click here to validate this page.">Valid HTML 4.01</a></li> </ul> </div> </body> </html>