Saya tahu ini diberi label sebagai dijawab, tetapi saya dapat mereproduksi masalah ini menggunakan gdb di OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012))
dan solusi yang berhasil untuk saya tidak menjawabnya untuk saya.
Ternyata ada pertanyaan lain di SO yang memiliki jawaban yang berhasil, jadi menurut saya ada baiknya menarik pertanyaan ini:
Mengapa transmisi gdb tidak berfungsi?
Jawaban singkatnya adalah Anda mungkin harus mengutip tunggal variabel namespace Anda:
(gdb) p ('MyScope::MyClass'*) ptr;
Bekerja untuk saya:
g++ -g test.cpp -o test
gdb test
(gdb) break main
(gdb) r
Breakpoint 1, main () at test.cpp:22
22 A::B *p = new A::B(100);
(gdb) n
24 p->print();
(gdb) n
m_a is 100
26 int *q = 0;
(gdb) p p
$1 = (A::B *) 0x602010
(gdb) p (A::B *) 0x602010
$2 = (A::B *) 0x602010
(gdb) p *((A::B *) 0x602010)
$3 = {m_a = 100}
Ini bekerja untuk saya. Apa yang Anda gunakan (versi gcc, OS, flag kompilasi?)
Bagaimana cara menghapus X byte dari akhir file besar tanpa membaca seluruh file?
Bagaimana cara mendapatkan cURL untuk tidak menampilkan bilah kemajuan?