{"id":22778,"date":"2021-07-24T20:56:45","date_gmt":"2021-07-24T20:56:45","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=22778"},"modified":"2021-07-24T20:56:47","modified_gmt":"2021-07-24T20:56:47","slug":"top-21-free-open-source-tools-for-system-diagnostics-debuggers-for-software-engineers","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/top-21-free-open-source-tools-for-system-diagnostics-debuggers-for-software-engineers\/","title":{"rendered":"Top 21 free open source tools for System Diagnostics\/Debuggers for software engineers"},"content":{"rendered":"\n<p>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/strace\/strace\" target=\"_blank\" rel=\"noopener\"><strong>strace<\/strong><\/a>&nbsp;&#8211; diagnostic, debugging and instructional userspace utility for Linux.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"http:\/\/dtrace.org\/blogs\/about\/\" target=\"_blank\" rel=\"noopener\"><strong>DTrace<\/strong><\/a>&nbsp;&#8211; is a performance analysis and troubleshooting tool.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Ltrace\" target=\"_blank\" rel=\"noopener\"><strong>ltrace<\/strong><\/a>&nbsp;&#8211; is a library call tracer, used to trace calls made by programs to library functions.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/brainsmoke\/ptrace-burrito\" target=\"_blank\" rel=\"noopener\"><strong>ptrace-burrito<\/strong><\/a>&nbsp;&#8211; is a friendly wrapper around ptrace.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/brendangregg\/perf-tools\" target=\"_blank\" rel=\"noopener\"><strong>perf-tools<\/strong><\/a>&nbsp;&#8211; performance analysis tools based on Linux perf_events (aka perf) and ftrace.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/iovisor\/bpftrace\" target=\"_blank\" rel=\"noopener\"><strong>bpftrace<\/strong><\/a>&nbsp;&#8211; high-level tracing language for Linux eBPF.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/draios\/sysdig\" target=\"_blank\" rel=\"noopener\"><strong>sysdig<\/strong><\/a>&nbsp;&#8211; system exploration and troubleshooting tool with first class support for containers.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"http:\/\/www.valgrind.org\/\" target=\"_blank\" rel=\"noopener\"><strong>Valgrind<\/strong><\/a>&nbsp;&#8211; is an instrumentation framework for building dynamic analysis tools.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/gperftools\/gperftools\" target=\"_blank\" rel=\"noopener\"><strong>gperftools<\/strong><\/a>&nbsp;&#8211; high-performance multi-threaded malloc() implementation, plus some performance analysis tools.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/nicolargo.github.io\/glances\/\" target=\"_blank\" rel=\"noopener\"><strong>glances<\/strong><\/a>&nbsp;&#8211; cross-platform system monitoring tool written in Python.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/hishamhm\/htop\" target=\"_blank\" rel=\"noopener\"><strong>htop<\/strong><\/a>&nbsp;&#8211; interactive text-mode process viewer for Unix systems. It aims to be a better &#8216;top&#8217;.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/aristocratos\/bashtop\" target=\"_blank\" rel=\"noopener\"><strong>bashtop<\/strong><\/a>&nbsp;&#8211; Linux resource monitor written in pure Bash.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"http:\/\/nmon.sourceforge.net\/pmwiki.php\" target=\"_blank\" rel=\"noopener\"><strong>nmon<\/strong><\/a>&nbsp;&#8211; a single executable for performance monitoring and data analysis.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/www.atoptool.nl\/\" target=\"_blank\" rel=\"noopener\"><strong>atop<\/strong><\/a>&nbsp;&#8211; ASCII performance monitor. Includes statistics for CPU, memory, disk, swap, network, and processes.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Lsof\" target=\"_blank\" rel=\"noopener\"><strong>lsof<\/strong><\/a>&nbsp;&#8211; displays in its output information about files that are opened by processes.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"http:\/\/www.brendangregg.com\/flamegraphs.html\" target=\"_blank\" rel=\"noopener\"><strong>FlameGraph<\/strong><\/a>&nbsp;&#8211; stack trace visualizer.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/zevv\/lsofgraph\" target=\"_blank\" rel=\"noopener\"><strong>lsofgraph<\/strong><\/a>&nbsp;&#8211; convert Unix lsof output to a graph showing FIFO and UNIX interprocess communication.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/mozilla\/rr\" target=\"_blank\" rel=\"noopener\"><strong>rr<\/strong><\/a>&nbsp;&#8211; is a lightweight tool for recording, replaying and debugging execution of applications.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/pcp.io\/index.html\" target=\"_blank\" rel=\"noopener\"><strong>Performance Co-Pilot<\/strong><\/a>&nbsp;&#8211; a system performance analysis toolkit.<br>&nbsp;&nbsp;\ud83d\udd38&nbsp;<a href=\"https:\/\/github.com\/sharkdp\/hexyl\" target=\"_blank\" rel=\"noopener\"><strong>hexyl<\/strong><\/a>&nbsp;&#8211; a command-line hex viewer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp;\ud83d\udd38&nbsp;strace&nbsp;&#8211; diagnostic, debugging and instructional userspace utility for Linux.&nbsp;&nbsp;\ud83d\udd38&nbsp;DTrace&nbsp;&#8211; is a performance analysis and troubleshooting tool.&nbsp;&nbsp;\ud83d\udd38&nbsp;ltrace&nbsp;&#8211; is a library call tracer, used to trace calls made by programs to library&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-22778","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/22778","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=22778"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/22778\/revisions"}],"predecessor-version":[{"id":22779,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/22778\/revisions\/22779"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=22778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=22778"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=22778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}