I’ve got test program like below:
#include<memory>
#include<iostream>
using namespace std;
int main()
{
shared_ptr<int> si(new int(5));
return 0;
}
Debug it:
(gdb) l
1 #include<memory>
2 #include<iostream>
3 using namespace std;
4
5 int main()
6 {
7 shared_ptr<int> si(new int(5));
8 return 0;
9 }
10
(gdb) b 8
Breakpoint 1 at 0x400bba: file testshare.cpp, line 8.
(gdb) r
Starting program: /home/x/cpp/x01/a.out
Breakpoint 1, main () at testshare.cpp:8
8 return 0;
(gdb) p si
$1 = std::shared_ptr (count 1, weak 0) 0x614c20
It only prints out the pointer type information of si, but how to get the value stored in it (in this case 5)?
How can I check the internal content of si during debugging?
Advertisement
Answer
Try the following:
p *si._M_ptr
Now, this assumes that you’re using libstdc++.so, given the output for p si.
Alternatively, you could use the value 0x614c20 directly (from your output):
p {int}0x614c20
Both should display the value 5.