8000 02-Use_the_Tools_Aviable : Add autotools, gdb, heaptrack, hotspot, cu… · StepTurtle/cppbestpractices@73500d4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 73500d4

Browse files
committed
02-Use_the_Tools_Aviable : Add autotools, gdb, heaptrack, hotspot, cutter
1 parent 203c9d1 commit 73500d4

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

02-Use_the_Tools_Available.md

Lines changed: 20 additions & 13 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, 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.
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

@@ -321,10 +332,6 @@ MSVC's [Control Flow Guard](https://msdn.microsoft.com/en-us/library/windows/des
321332

322333
* `_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).
323334

324-
### Heap Profiling
325-
326-
* [https://epfl-vlsc.github.io/memoro/](Memoro) - A detailed heap profiler
327-
328335
## Ignoring Warnings
329336

330337
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
351358

352359
## Debugging
353360

354-
### uftrace
361+
### GDB
355362

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.
357364

358365
### rr
359366

0 commit comments

Comments
 (0)
0