Dev Tools
Author: Volodymyr Shymanskyy
December 2014
● Version control
● Profilers, Debuggers
○ Advanced debugging features
● Prototypes, Simulators, Emulators
● Tracers, Dumps, Logs, Plots, Graphs,
Stats, Diagnostics
● Productivity tools
● ...
Even more
Environments
Build Systems
Instrumentation
Compilers
GUI editors
UT frameworks
Static analysers
Code/Doc generators
IDEs
Code generators
● GUI
○ wxFormBuilder
● Class Structure
○ Rational Rose
● Parsers, etc.
○ lex & yacc
Documentation generators
DoxyGen
● C/C++, C#, Objective-C
● Java, Python, PHP, VHDL
JavaDoc
PyDoc
DoxyGen example
/**
* <A short one line description>
*
* <Longer description>
* <May span multiple lines or paragraphs as needed>
*
* @param Description of method's or function's input parameter
* @param ...
* @return Description of the return value
*/
DoxyGen
structure
classes
graphs
interlinks
comments
Cross-References
LXR
Version control
Git, SVN (Subversion), Mercurial
Old: CVS, Perforce
Comparison
Simple:
git clone <url>
git pull/push
git add/commit
Understanding Git Conceptually
Tortoise SVN / Git, Gitg
Diff tools
WinMerge
Meld, KDiff3
Beyond Compare
Bug Tracking
Jira, Bugzilla
Build System
Makefile, CMake
Ant -> Ivy
Python
may be used ;)
Build
server
Static analysers
Needs only source code!
Static analysers
Java: FindBugs, Checkstyle
C++: Eclipse, Clang, Coverity, KlocWork
Obj-C: Clang
Other: JSLint, Pylint, Perl::Critic, ...
Dynamic Analysis
Needs scenarios!
Good to run with UT suite.
Debuggers, Profilers, Tracers...
UT Frameworks
● Provide infra for UT
○ Integrate to IDEs / CI
○ Reporting
○ Convenient APIs
JUnit, CxxTest, ...
Debuggers
Conditional breakpoints
Data breakpoints
Watch expressions
Reverse, Rec-Replay
Remote debugging
Offline debugging
Debugging in emulator!
Data Display Debugger
Profilers
● speed, resource usage, cache
Perl perl -d:NYTProf myscript.pl
Python python -m cProfile myscript.py
+pycallgraph
Java NetBeans, GC Viewer, here (rus)
You can do measurements directly in code!
Profilers
Valgrind
memcheck
cachegrind
callgrind
massif
helgrind
tutorial (rus)
Valkyrie
Kcachegrind
fun
sysstat (sar)
iostat
pidstat
mpstat
etherape, vnstat
powertop
socat, netem, strace, ltrace
Emulators
VirtualBox
QEMU
Protocol Sniffers / Analysers
Wireshark
Fiddler
Hardware
USB
Fiddler
Browser
dev tools
Productivity tools
Linux!
● KDE, krusader, yakuake, redshift
● VLC, Inkscape, Gimp
● Use console!!! Vim, Emacs
Windows:
● RocketDock, Actual Title Buttons, F.lux, WorkRave
● Browser, File Manager, 7z, SysInternals suite
● Punto Switcher, Keyboard, ConEmu, Putty
● Notepad++, STDU Viewer, Paint.Net, WinSCP, UltraVNC
IDE
● Visual Studio Windows, .Net, C/C++
● IntelliJ IDEA Java, Scala, Python...
● Xcode Obj-C, C/C++, Python
● PyCharm Python
● Padre Perl
Eclipse
● Java
● C/C++ CDT
● Python PyDev
● Perl EPIC
● Node.js
● … lots of plugins!
Prototyping
● Python, JS, Node.js
● Arduino
● Online:
○ Coding Ground
○ JSFiddle
Online tools
Validators
Drawing
Diagrams: Gliffy
Mockups: Balsamiq
Google Docs, Google Drive, Dropbox
FreeMind, github, trello, WeTransfer, doodle
Logs, Dumps, Event Traces
● “Debug by prints”
○ Embedded / multithreaded
● Log to file, to ram (may be shared)
○ Filter by module/severity
● Dump part of the state
○ Stats
● Event Traces
○ Binary, lightweight
Statistics
● Event counts
○ In domain, or internal
○ Amount of function calls
● Time of processing
● Latency
● CPU/RAM usage
Diagnostics
● Now check them all!
● During normal operation
● Special diagnostics mode
○ For intrusive things
Crash & Bug reporting
Environment info
Stack traces
Dumps, Stats, Logs...
Visualize!
geomview,
meshlab
Plots
Mathematica, gnuplot
Audible, smell? :)
Graphs
How it might be interesting?..
GraphViz
Instrumentation
Hooks Scripts
+
Simulators
● CNC
● ...
● User-mode Linux
Part of the system is replaced with a simulated one.
CLI - Command Line
● Interactive
● One-shot
Increases usability &
Allows automation!
Scripting Engine
● JS, Python, Lua, C# for .Net
● Examples
○ Atom, Sublime text editors
○ Some games use Lua
○ VirtualBox uses Python
● Even better automation! ^_^
Pick your own!Pick your own!
Volodymyr Shymanskyy
Embedded Trainer
Embedded Software Developer
GL Hackerspace Co-Founder
vshymanskyi@gmail.com
skype: vshymanskyi
LinkedIn, Facebook
If you’re using these materials for presentation, please add my name and LinkedIn to the “Thanks” slide. Also submit your ideas and corrections.

Tools