diff --git "a/00~\345\277\253\351\200\237\345\274\200\345\247\213/\345\272\224\347\224\250\350\260\203\350\257\225/2024~How to build highly-debuggable C++ binaries.md" "b/00~\345\277\253\351\200\237\345\274\200\345\247\213/\345\272\224\347\224\250\350\260\203\350\257\225/2024~How to build highly-debuggable C++ binaries.md" new file mode 100644 index 0000000..629b5cd --- /dev/null +++ "b/00~\345\277\253\351\200\237\345\274\200\345\247\213/\345\272\224\347\224\250\350\260\203\350\257\225/2024~How to build highly-debuggable C++ binaries.md" @@ -0,0 +1,9 @@ +> [Original article](https://dhashe.com/how-to-build-highly-debuggable-c-binaries.html) to build highly-debuggable C++ binaries, follow these steps: +> +> 1. **Enable Sanitizers:** Use `-fsanitize=address,undefined` for debugging memory and undefined behavior issues. +> 2. **Enable Debug Modes in Standard Libraries:** Use `-D_GLIBCXX_DEBUG` or `_LIBCPP_HARDENING_MODE` for enhanced checks. +> 3. **Generate Debug Info for Macros:** Add `-ggdb3` to capture macro definitions. +> 4. **Use Frame Pointers:** Add `-fno-omit-frame-pointer`. +> 5. **Enable Asynchronous Unwind Tables:** Add `-fasynchronous-unwind-tables`. + +# How to build highly-debuggable C++ binaries diff --git "a/11~QT/99~\345\217\202\350\200\203\350\265\204\346\226\231/\346\226\207\347\201\253\345\206\260\347\263\226\347\232\204\347\241\205\345\237\272\345\267\245\345\235\212~\343\200\212Qt \347\274\226\347\250\213\347\263\273\345\210\227\343\200\213/README.md" "b/11~QT/99~\345\217\202\350\200\203\350\265\204\346\226\231/2018~\346\226\207\347\201\253\345\206\260\347\263\226\347\232\204\347\241\205\345\237\272\345\267\245\345\235\212~\343\200\212Qt \347\274\226\347\250\213\347\263\273\345\210\227\343\200\213/README.md" similarity index 100% rename from "11~QT/99~\345\217\202\350\200\203\350\265\204\346\226\231/\346\226\207\347\201\253\345\206\260\347\263\226\347\232\204\347\241\205\345\237\272\345\267\245\345\235\212~\343\200\212Qt \347\274\226\347\250\213\347\263\273\345\210\227\343\200\213/README.md" rename to "11~QT/99~\345\217\202\350\200\203\350\265\204\346\226\231/2018~\346\226\207\347\201\253\345\206\260\347\263\226\347\232\204\347\241\205\345\237\272\345\267\245\345\235\212~\343\200\212Qt \347\274\226\347\250\213\347\263\273\345\210\227\343\200\213/README.md" diff --git "a/11~QT/99~\345\217\202\350\200\203\350\265\204\346\226\231/\346\226\260\345\256\235\345\272\223~\343\200\212Qt \346\225\231\347\250\213\343\200\213/README.md" "b/11~QT/99~\345\217\202\350\200\203\350\265\204\346\226\231/2018~\346\226\260\345\256\235\345\272\223~\343\200\212Qt \346\225\231\347\250\213\343\200\213/README.md" similarity index 100% rename from "11~QT/99~\345\217\202\350\200\203\350\265\204\346\226\231/\346\226\260\345\256\235\345\272\223~\343\200\212Qt \346\225\231\347\250\213\343\200\213/README.md" rename to "11~QT/99~\345\217\202\350\200\203\350\265\204\346\226\231/2018~\346\226\260\345\256\235\345\272\223~\343\200\212Qt \346\225\231\347\250\213\343\200\213/README.md"