Skip to main content

Posts

Showing posts from August, 2024

How to use gdb in Ubuntu Terminal

Here's a practical, minimal guide for using GDB in Ubuntu terminal — from launching to setting breakpoints and navigating your code. 🧰 Step 1: Compile with Debug Symbols Use -g and disable optimizations ( -O0 preferred for debugging): bash Copy Edit g++ -g -O0 -o myprog myprog.cpp 🚀 Step 2: Launch GDB bash Copy Edit gdb ./myprog You'll see a (gdb) prompt. 🎯 Step 3: Set Breakpoints You can set breakpoints in three main ways : ✅ a. At a function gdb Copy Edit (gdb) break main ✅ b. At a specific file and line gdb Copy Edit (gdb) break myprog.cpp:42 ✅ c. At a method in a class gdb Copy Edit (gdb) break MyClass::doSomething If the symbol is mangled (C++), GDB usually demangles automatically, especially if compiled with -g . ▶️ Step 4: Run the Program gdb Copy Edit (gdb) run 🧭 Step 5: Navigate Command Meaning next or n Step over current line step or s Step into function call finish Run until current function returns continue or c Continue until...

cpp chatGpt discussions: Anyway to execute init() n exit() fn before n after main automatically

You said: in cpp anyway to execute init() n exit() fn before n after main automatically ChatGPT said: ChatGPT In C++, you can use several techniques to ensure that certain functions are executed automatically before and after the main() function. Here’s a summary of methods you can use: 1. Global Object Constructors and Destructors You can create global objects whose constructors and destructors will be called before and after main() is executed, respectively. This is the most common method for running initialization and cleanup code. Example: cpp Copy code # include <iostream> class InitExitHandler { public : InitExitHandler () { // This code runs before main() std::cout << "Initialization code before main()" << std::endl; } ~ InitExitHandler () { // This code runs after main() std::cout << "Cleanup code after main()" << std::endl; } }; // Create global instance InitExitHandl...