Merge pull request #116 from thomaslepoix/master

02-Use_the_Tools_Aviable : Add autotools, gdb, heaptrack, hotspot, cutter
This commit is contained in:
Jason Turner
2020-05-17 08:25:28 -06:00
committed by GitHub

View File

@@ -16,6 +16,7 @@ Source control is an absolute necessity for any software development project. If
Use an industry standard widely accepted build tool. This prevents you from reinventing the wheel whenever you discover / link to a new library / package your product / etc. Examples include:
* [Autotools](https://autotools.io) - The traditional GNU build system.
* [CMake](http://www.cmake.org/)
* Consider: https://github.com/sakra/cotire/ for build performance
* Consider: https://github.com/toeb/cmakepp for enhanced usability
@@ -25,9 +26,9 @@ Use an industry standard widely accepted build tool. This prevents you from rein
* `cmake --build` provides a common interface for compiling your project regardless of platform
* [Waf](https://waf.io/)
* [FASTBuild](http://www.fastbuild.org/)
* [Ninja](https://ninja-build.org/) - can greatly improve the incremental build time of your larger projects. Can be used as a target for CMake.
* [Bazel](http://bazel.io/) - Fast incremental builds using network artefact caching and remote execution
* [Buck](http://buckbuild.com/) - Similar to Bazel, with very good support for iOS and Andoid
* [Ninja](https://ninja-build.org/) - Can greatly improve the incremental build time of your larger projects. Can be used as a target for CMake.
* [Bazel](http://bazel.io/) - Fast incremental builds using network artefact caching and remote execution.
* [Buck](http://buckbuild.com/) - Similar to Bazel, with very good support for iOS and Andoid.
* [gyp](https://chromium.googlesource.com/external/gyp/) - Google's build tool for chromium.
* [maiken](https://github.com/Dekken/maiken) - Crossplatform build tool with Maven-esque configuration style.
* [Qt Build Suite](http://doc.qt.io/qbs/) - Crossplatform build tool From Qt.
@@ -275,13 +276,23 @@ A coverage analysis tool shall be run when tests are executed to make sure the e
* [OpenCppCoverage](https://github.com/OpenCppCoverage/OpenCppCoverage) - open source coverage reporting tool for Windows.
### Valgrind
### Heap profiling
[Valgrind](http://www.valgrind.org/) is a runtime code analyzer that can detect memory leaks, race conditions, and other associated problems. It is supported on various Unix platforms.
* [Valgrind](http://www.valgrind.org/)
* Valgrind is a runtime code analyzer that can detect memory leaks, race conditions, and other associated problems. It is supported on various Unix platforms.
* [Heaptrack](https://github.com/KDE/heaptrack)
* A profiler created by a Valgrind's Massif developper. Quite similar to Massif with pros and cons over it, way more intuitive though.
* [Dr Memory](http://www.drmemory.org)
* [Memoro](https://epfl-vlsc.github.io/memoro/) - A detailed heap profiler.
### Dr Memory
### CPU profiling
Similar to Valgrind. http://www.drmemory.org
* [Hotspot](https://github.com/KDAB/hotspot) - An intuitive front-end to visualize datas produced by the [perf](https://perf.wiki.kernel.org) CPU profiler.
* [uftrace](https://github.com/namhyung/uftrace) - Can be used to generating function call graphs of a program execution.
### Reverse engineering tools
* [Cutter](https://cutter.re/) - A front-end for [Radare2](https://www.radare.org/n/radare2.html). It provides tools such as decompiler, disassembly, graph visualizer, hex editor.
### GCC / Clang Sanitizers
@@ -351,9 +362,9 @@ Don't forget to make sure that your error handling is being tested and works pro
## Debugging
### uftrace
### GDB
[uftrace](https://github.com/namhyung/uftrace) can be used to generating function call graphs of a program execution
[GDB](https://www.gnu.org/software/gdb/) - The GNU debugger, powerful and widely used. Most IDEs implement an interface to use it.
### rr