980
edits
m (formatting) |
No edit summary |
||
Line 4: | Line 4: | ||
*[[/cmake.org/getting-started/|https://cmake.org/getting-started/]] -- Build using g++ and clang. | *[[/cmake.org/getting-started/|https://cmake.org/getting-started/]] -- Build using g++ and clang. | ||
*[[/learn.microsoft.com/en-us/vcpkg/|https://learn.microsoft.com/en-us/vcpkg/]] -- cross-platform C/C++ package manager | *[[/learn.microsoft.com/en-us/vcpkg/|https://learn.microsoft.com/en-us/vcpkg/]] -- cross-platform C/C++ package manager | ||
*[[https://www.jenkins.io/ -- Automation Server | |||
*[[/www.sourceware.org/gdb/|https://www.sourceware.org/gdb/]] or [[/lldb.llvm.org/|https://lldb.llvm.org/]] -- Debuggers | *[[/www.sourceware.org/gdb/|https://www.sourceware.org/gdb/]] or [[/lldb.llvm.org/|https://lldb.llvm.org/]] -- Debuggers | ||
*[[/github.com/google/sanitizers|https://github.com/google/sanitizers]] -- Read about each of the available sanitizers | *[[/github.com/google/sanitizers|https://github.com/google/sanitizers]] -- Read about each of the available sanitizers | ||
Line 9: | Line 10: | ||
*A review of all the options for each tool you want to acquire. | *A review of all the options for each tool you want to acquire. | ||
== Reading Lists == | |||
=== Overviews === | |||
{| class="wikitable" | |||
! Topic !! Overview !! Options !! Progress !! Notes !! | |||
|- | |||
| vcpkg || https://learn.microsoft.com/en-us/vcpkg/ || | |||
|- | |||
| apt || https://wiki.debian.org/Apt || | |||
|- | |||
| cmake || https://cmake.org/getting-started/ || | |||
|- | |||
| g++ || https://www.gnu.org/software/gcc/ || | |||
|- | |||
| gdb || https://www.sourceware.org/gdb/ || | |||
|- | |||
| llvm || llvm.org || | |||
|- | |||
| clang || https://clang.llvm.org/ || | |||
|- | |||
| lldb || https://lldb.llvm.org/ || | |||
|- | |||
| valgrind || https://valgrind.org/ || | |||
|- | |||
| lcov || https://github.com/linux-test-project/lcov || -DENABLE_COVERAGE=1 | |||
if (ENABLE_COVERAGE) | |||
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING | |||
"set the build type." FORCE) | |||
include(CodeCoverage.cmake) | |||
append_coverage_compiler_flags() | |||
endif() | |||
add_executable | |||
target_link_libraries( a.exe test_a.cpp CPPUnit::CPPUnit | |||
if (ENABLE_COVERAGE) | |||
setup_target_for_coverage_lcov( | |||
NAME coverage | |||
EXECUTABLE ${cmake_current_binarey_dir}/test_a | |||
LCOV_ARGS --rc lcov_branch_coverage=1 | |||
GENHTML_ARGS --legend --branch-coveragbe | |||
DEPENDENCIES test_a) | |||
|- | |||
| sanitizers || https://github.com/google/sanitizers | |||
https://www.cl.cam.ac.uk/~nk480/C1819/lecture5.pdf | |||
| | |||
|- | |||
| asan || https://github.com/google/sanitizers/wiki/AddressSanitizer ||gdb & clang: | |||
CMAKE_CXX_FLAGS -fsanitize=address | |||
CMAKE_EXE_LINKER_FLAGS -fsanitize=address | |||
|- | |||
| msan || https://github.com/google/sanitizers/wiki/MemorySanitizer || | |||
|- | |||
| tsan || https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual || | |||
|- | |||
| ubsan || https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html || gdb & clang: | |||
CMAKE_CXX_FLAGS -fsanitize=undefined | |||
CMAKE_EXE_LINKER_FLAGS -fsanitize=undefined | |||
|} | |||
==Start With== | |||
*[[/cmake.org/getting-started/|https://cmake.org/getting-started/]] -- Build using g++ and clang. | |||
*[[/learn.microsoft.com/en-us/vcpkg/|https://learn.microsoft.com/en-us/vcpkg/]] -- cross-platform C/C++ package manager | |||
*[[/www.sourceware.org/gdb/|https://www.sourceware.org/gdb/]] or [[/lldb.llvm.org/|https://lldb.llvm.org/]] -- Debuggers | |||
*[[/github.com/google/sanitizers|https://github.com/google/sanitizers]] -- Read about each of the available sanitizers | |||
*[[/valgrind.org/docs/manual/quick-start.html|https://valgrind.org/docs/manual/quick-start.html]] -- A suite of debugging and profiling tools | |||
*A review of all the options for each tool you want to acquire. | |||
== Reading Lists == | |||
=== Overviews === | |||
{| class="wikitable" | |||
! Topic !! Overview !! Options !! Progress !! Notes !! | |||
|- | |||
| vcpkg || https://learn.microsoft.com/en-us/vcpkg/ || | |||
|- | |||
| apt || https://wiki.debian.org/Apt || | |||
|- | |||
| cmake || https://cmake.org/getting-started/ || | |||
|- | |||
| g++ || https://www.gnu.org/software/gcc/ || | |||
|- | |||
| gdb || https://www.sourceware.org/gdb/ || | |||
|- | |||
| llvm || llvm.org || | |||
|- | |||
| clang || https://clang.llvm.org/ || | |||
|- | |||
| lldb || https://lldb.llvm.org/ || | |||
|- | |||
| valgrind || https://valgrind.org/ || | |||
|- | |||
| sanitizers || https://github.com/google/sanitizers | |||
https://www.cl.cam.ac.uk/~nk480/C1819/lecture5.pdf | |||
| | |||
|- | |||
| asan || https://github.com/google/sanitizers/wiki/AddressSanitizer || | |||
|- | |||
| msan || https://github.com/google/sanitizers/wiki/MemorySanitizer || | |||
|- | |||
| tsan || https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual || | |||
|- | |||
| ubsan || https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html || | |||
|} | |||
==Start With== | |||
*[[/cmake.org/getting-started/|https://cmake.org/getting-started/]] -- Build using g++ and clang. | |||
*[[/learn.microsoft.com/en-us/vcpkg/|https://learn.microsoft.com/en-us/vcpkg/]] -- cross-platform C/C++ package manager | |||
*[[/www.sourceware.org/gdb/|https://www.sourceware.org/gdb/]] or [[/lldb.llvm.org/|https://lldb.llvm.org/]] -- Debuggers | |||
*[[/github.com/google/sanitizers|https://github.com/google/sanitizers]] -- Read about each of the available sanitizers | |||
*[[/valgrind.org/docs/manual/quick-start.html|https://valgrind.org/docs/manual/quick-start.html]] -- A suite of debugging and profiling tools | |||
*A review of all the options for each tool you want to acquire. | |||
== Reading Lists == | |||
=== Overviews === | |||
{| class="wikitable" | |||
! Topic !! Overview !! Options !! Progress !! Notes !! | |||
|- | |||
| vcpkg || https://learn.microsoft.com/en-us/vcpkg/ || | |||
|- | |||
| apt || https://wiki.debian.org/Apt || | |||
|- | |||
| cmake || https://cmake.org/getting-started/ || | |||
|- | |||
| g++ || https://www.gnu.org/software/gcc/ || | |||
|- | |||
| gdb || https://www.sourceware.org/gdb/ || | |||
|- | |||
| llvm || llvm.org || | |||
|- | |||
| clang || https://clang.llvm.org/ || | |||
|- | |||
| lldb || https://lldb.llvm.org/ || | |||
|- | |||
| valgrind || https://valgrind.org/ || | |||
|- | |||
| sanitizers || https://github.com/google/sanitizers | |||
https://www.cl.cam.ac.uk/~nk480/C1819/lecture5.pdf | |||
| | |||
|- | |||
| asan || https://github.com/google/sanitizers/wiki/AddressSanitizer || | |||
|- | |||
| msan || https://github.com/google/sanitizers/wiki/MemorySanitizer || | |||
|- | |||
| tsan || https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual || | |||
|- | |||
| ubsan || https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html || | |||
|} | |||
=== Integration === | |||
{| class="wikitable" | |||
! Topic !! Download_and_compile.sh !! dev1 | |||
|- | |||
| vcpkg || || | |||
|- | |||
| apt || || | |||
|- | |||
| cmake || || | |||
|- | |||
| g++ || || | |||
|- | |||
| gdb || || | |||
|- | |||
| llvm || || | |||
|- | |||
| clang || || | |||
|- | |||
| lldb || || | |||
|- | |||
| valgrind || || | |||
|- | |||
| sanitizers || || | |||
|- | |||
| asan || || | |||
|- | |||
| msan || || | |||
|- | |||
| tsan || || | |||
|- | |||
| ubsan || || | |||
|} | |||
==Follow-on Questions== | ==Follow-on Questions== | ||
* Does g++ support each of these sanitizers? | * Does g++ support each of these sanitizers? | ||
*What other tools should I research besides gdb, lldb, valgrind, UBSAN, ASAN, TSAN, and MSAN? | * What other tools should I research besides gdb, lldb, valgrind, UBSAN, ASAN, TSAN, and MSAN? | ||
*Are there tools other than sanitizers and debuggers I should know about? | * Are there tools other than sanitizers and debuggers I should know about? | ||
*Are there obsolete tools I should ignore? | * Are there obsolete tools I should ignore? | ||
*Are there books that cover C++ topics beyond writing C++? How about how-to guides? (I'll be searching for these next, but do you happen to know any particularly useful and easy to read? | * Are there books that cover C++ topics beyond writing C++? How about how-to guides? (I'll be searching for these next, but do you happen to know any particularly useful and easy to read? | ||
*In his reply, [[/www.reddit.com/user/Ujjawal-Gupta/|Ujjawal-Gupta]] mentions crash dumps and crash dump tools. I don't know much about them. What good resources on this topic are there for Linux, Windows, and Mac? | * In his reply, [[/www.reddit.com/user/Ujjawal-Gupta/|Ujjawal-Gupta]] mentions crash dumps and crash dump tools. I don't know much about them. What good resources on this topic are there for Linux, Windows, and Mac? | ||
= | == Background == | ||
I'm about to start going through the list above for myself. It may take a while. | I'm about to start going through the list above for myself. It may take a while. | ||
Line 29: | Line 229: | ||
[[/stackoverflow.com/questions/63978029/setup-lldb-debugging-with-cpp-extension-in-vscode-linux|https://stackoverflow.com/questions/63978029/setup-lldb-debugging-with-cpp-extension-in-vscode-linux]] | [[/stackoverflow.com/questions/63978029/setup-lldb-debugging-with-cpp-extension-in-vscode-linux|https://stackoverflow.com/questions/63978029/setup-lldb-debugging-with-cpp-extension-in-vscode-linux]] | ||
== Other Thoughts == | == Other Thoughts == | ||
Line 38: | Line 239: | ||
<nowiki>https://liberapay.com/t3r</nowiki> | <nowiki>https://liberapay.com/t3r</nowiki> | ||
Currently working on: | Currently working on: |
edits