Tools
-
Upload
volodymyr-shymanskyy -
Category
Engineering
-
view
339 -
download
1
Transcript of Tools
Dev ToolsAuthor: Volodymyr ShymanskyyDecember 2014
● Version control● Profilers, Debuggers
○ Advanced debugging features● Prototypes, Simulators, Emulators● Tracers, Dumps, Logs, Plots, Graphs,
Stats, Diagnostics● Productivity tools● ...
Even moreEnvironmentsBuild SystemsInstrumentationCompilersGUI editorsUT frameworksStatic analysersCode/Doc generatorsIDEs
Code generators
● GUI○ wxFormBuilder
● Class Structure○ Rational Rose
● Parsers, etc.○ lex & yacc
Documentation generators
DoxyGen● C/C++, C#, Objective-C● Java, Python, PHP, VHDL
JavaDocPyDoc
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
structureclassesgraphsinterlinkscomments
Version control
Git, SVN (Subversion), MercurialOld: CVS, Perforce
Comparison
Simple:git clone <url>
git pull/push
git add/commit
Understanding Git Conceptually
Tortoise SVN / Git, Gitg
Diff toolsWinMergeMeld, KDiff3Beyond Compare
Bug Tracking
Jira, Bugzilla
Build System
Makefile, CMakeAnt -> Ivy
Pythonmay be used ;)
Buildserver
Static analysersNeeds only source code!
Static analysers
Java: FindBugs, CheckstyleC++: Eclipse, Clang, Coverity, KlocWork
Obj-C: ClangOther: JSLint, Pylint, Perl::Critic, ...
Dynamic AnalysisNeeds 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, ...
DebuggersConditional breakpoints
Data breakpointsWatch expressions
Reverse, Rec-ReplayRemote debugging
Offline debuggingDebugging in emulator!
Data Display Debugger
Profilers
● speed, resource usage, cachePerl 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
memcheckcachegrindcallgrindmassifhelgrind
tutorial (rus)
Valkyrie
Kcachegrind
fun
sysstat (sar)iostatpidstatmpstatetherape, vnstatpowertopsocat, netem, strace, ltrace
Emulators
VirtualBoxQEMU
Protocol Sniffers / Analysers
WiresharkFiddlerHardware
USB
Fiddler
Browserdev 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 toolsValidatorsDrawing
Diagrams: GliffyMockups: Balsamiq
Google Docs, Google Drive, DropboxFreeMind, 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 infoStack tracesDumps, Stats, Logs...
Visualize!
geomview,meshlab
Graphs
How it might be interesting?..
GraphViz
Instrumentation
Hooks Scripts
+
Simulators
● CNC● ...● User-mode LinuxPart 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 ShymanskyyEmbedded TrainerEmbedded Software DeveloperGL Hackerspace Co-Founder
[email protected]: vshymanskyiLinkedIn, 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.