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
.