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...
There are several different types of smart pointers in C++. Here are some of the most common ones:
- Unique pointers: Unique pointers are a type of smart pointer that owns the object that it points to. This means that there can only be one unique pointer to an object at a time. When a unique pointer goes out of scope, the object that it points to is automatically deleted.
- Shared pointers: Shared pointers are a type of smart pointer that share ownership of the object that they point to. This means that there can be multiple shared pointers to an object at a time. When the last shared pointer to an object goes out of scope, the object is automatically deleted.
- Weak pointers: Weak pointers are a type of smart pointer that do not own the object that they point to. This means that the object that the weak pointer points to can be deleted even if the weak pointer is still in scope. Weak pointers are often used to prevent circular references between objects.
- Auto pointers: Auto pointers are a type of smart pointer that are automatically created and deleted by the compiler. Auto pointers are a convenient way to use smart pointers, but they can be less flexible than other types of smart pointers.
Here is a table that summarizes the different types of smart pointers in C++:
Smart pointer type | Ownership | When the object is deleted |
---|---|---|
Unique pointer | Owns the object | When the unique pointer goes out of scope |
Shared pointer | Shares ownership of the object | When the last shared pointer to the object goes out of scope |
Weak pointer | Does not own the object | When the object that the weak pointer points to is deleted |
Auto pointer | Automatically created and deleted by the compiler | When the object that the auto pointer points to is deleted |
I hope this helps!
Comments
Post a Comment
If you have any doubts, please let me know.