際際滷

際際滷Share a Scribd company logo
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
Tools
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
Tools
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 youre using these materials for presentation, please add my name and LinkedIn to the Thanks slide. Also submit your ideas and corrections.

More Related Content

Tools