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...
Example of using the different types of smart pointers in C++:
C++
#include <iostream>
#include <memory>
using namespace std;
class MyObject {
public:
MyObject() {
cout << "MyObject created" << endl;
}
~MyObject() {
cout << "MyObject deleted" << endl;
}
};
int main() {
// Create a unique pointer to a MyObject.
unique_ptr<MyObject> my_object(new MyObject());
// The MyObject object will be deleted when the unique pointer goes out of scope.
// Create a shared pointer to a MyObject.
shared_ptr<MyObject> my_shared_object(new MyObject());
// There can be multiple shared pointers to the same MyObject object.
shared_ptr<MyObject> my_other_shared_object(my_shared_object);
// The MyObject object will be deleted when the last shared pointer to it goes out of scope.
// Create a weak pointer to a MyObject.
weak_ptr<MyObject> my_weak_object(my_shared_object);
// The weak pointer does not own the MyObject object, so it can be deleted even if the weak pointer is still in scope.
return 0;
}
This code will print the following output to the console:
Code snippet
MyObject created
MyObject deleted
The first line of output is printed when the MyObject
object is created. The second line of output is printed when the MyObject
object is deleted. The MyObject
object is deleted when the unique pointer goes out of scope.
Comments
Post a Comment
If you have any doubts, please let me know.