8000 Merge pull request #116 from thomaslepoix/master · comingzero/cppbestpractices@c1367aa · GitHub
[go: up one dir, main page]

Skip to content

Commit c1367aa

Browse files
authored
Merge pull request cpp-best-practices#116 from thomaslepoix/master
02-Use_the_Tools_Aviable : Add autotools, gdb, heaptrack, hotspot, cutter
2 parents a09519f + 0336f01 commit c1367aa

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

02-Use_the_Tools_Available.md

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Source control is an absolute necessity for any software development project. If
1616

1717
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:
1818

19+
* [Autotools](https://autotools.io) - The traditional GNU build system.
1920
* [CMake](http://www.cmake.org/)
2021
* Consider: https://github.com/sakra/cotire/ for build performance
2122
* 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
2526
* `cmake --build` provides a common interface for compiling your project regardless of platform
2627
* [Waf](https://waf.io/)
2728
* [FASTBuild](http://www.fastbuild.org/)
28-
* [Ninja](https://ninja-build.org/) - can greatly improve the incremental build time of your larger projects. Can be used as a target for CMake.
29-
* [Bazel](http://bazel.io/) - Fast incremental builds using network artefact caching and remote execution
30-
* [Buck](http://buckbuild.com/) - Similar to Bazel, with very good support for iOS and Andoid
29+
* [Ninja](https://ninja-build.org/) - Can greatly improve the incremental build time of your larger projects. Can be used as a target for CMake.
30+
* [Bazel](http://bazel.io/) - Fast incremental builds using network artefact caching and remote execution.
31+
* [Buck](http://buckbuild.com/) - Similar to Bazel, with very good support for iOS and Andoid.
3132
* [gyp](https://chromium.googlesource.com/external/gyp/) - Google's build tool for chromium.
3233
* [maiken](https://github.com/Dekken/maiken) - Crossplatform build tool with Maven-esque configuration style.
3334
* [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
275276
* [OpenCppCoverage](https://github.com/OpenCppCoverage/OpenCppCoverage) - open source coverage reporting tool for Windows.
276277

277278

278-
### Valgrind
279+
### Heap profiling
279280

280-
[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.
281+
* [Valgrind](http://www.valgrind.org/)
282+
* Valgrind is a runtime code analyzer that can detect memory leaks, race conditions, and other associated problems. It is supported on various Unix platforms.
283+
* [Heaptrack](https://github.com/KDE/heaptrack)
284+
* A profiler created by a Valgrind's Massif developper. Quite similar to Massif with pros and cons over it, way more intuitive though.
285+
* [Dr Memory](http://www.drmemory.org)
286+
* [Memoro](https://epfl-vlsc.github.io/memoro/) - A detailed heap profiler.
281287

282-
### Dr Memory
288+
### CPU profiling
283289

284-
Similar to Valgrind. http://www.drmemory.org
290+
* [Hotspot](https://github.com/KDAB/hotspot) - An intuitive front-end to visualize datas produced by the [perf](https://perf.wiki.kernel.org) CPU profiler.
291+
* [uftrace](https://github.com/namhyung/uftrace) - Can be used to generating function call graphs of a program execution.
292+
293+
### Reverse engineering tools
294+
295+
* [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.
285296

286297
### GCC / Clang Sanitizers
287298

@@ -351,9 +362,9 @@ Don't forget to make sure that your error handling is being tested and works pro
351362

352363
## Debugging
353364

354-
### uftrace
365+
### GDB
355366

356-
[uftrace](https://github.com/namhyung/uftrace) can be used to generating function call graphs of a program execution
367+
[GDB](https://www.gnu.org/software/gdb/) - The GNU debugger, powerful and widely used. Most IDEs implement an interface to use it.
357368

358369
### rr
359370

0 commit comments

Comments
 (0)
0