You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 02-Use_the_Tools_Available.md
+20-13Lines changed: 20 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -16,6 +16,7 @@ Source control is an absolute necessity for any software development project. If
16
16
17
17
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:
18
18
19
+
*[Autotools](https://autotools.io) - The traditional GNU build system.
19
20
*[CMake](http://www.cmake.org/)
20
21
* Consider: https://github.com/sakra/cotire/ for build performance
21
22
* 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
25
26
*`cmake --build` provides a common interface for compiling your project regardless of platform
26
27
*[Waf](https://waf.io/)
27
28
*[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.
31
32
*[gyp](https://chromium.googlesource.com/external/gyp/) - Google's build tool for chromium.
32
33
*[maiken](https://github.com/Dekken/maiken) - Crossplatform build tool with Maven-esque configuration style.
33
34
*[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
275
276
*[OpenCppCoverage](https://github.com/OpenCppCoverage/OpenCppCoverage) - open source coverage reporting tool for Windows.
276
277
277
278
278
-
### Valgrind
279
+
### Heap profiling
279
280
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, rac
8000
e 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.
281
287
282
-
### Dr Memory
288
+
### CPU profiling
283
289
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.
*`_GLIBCXX_DEBUG` with GCC's implementation libstdc++ implementation. See [Krister's blog article](https://kristerw.blogspot.se/2018/03/detecting-incorrect-c-stl-usage.html).
323
334
324
-
### Heap Profiling
325
-
326
-
*[https://epfl-vlsc.github.io/memoro/](Memoro) - A detailed heap profiler
327
-
328
335
## Ignoring Warnings
329
336
330
337
If it is determined by team consensus that the compiler or analyzer is warning on something that is either incorrect or unavoidable, the team will disable the specific error to as localized part of the code as possible.
@@ -351,9 +358,9 @@ Don't forget to make sure that your error handling is being tested and works pro
351
358
352
359
## Debugging
353
360
354
-
### uftrace
361
+
### GDB
355
362
356
-
[uftrace](https://github.com/namhyung/uftrace) can be used to generating function call graphs of a program execution
363
+
[GDB](https://www.gnu.org/software/gdb/) - The GNU debugger, powerful and widely used. Most IDEs implement an interface to use it.
0 commit comments