Ich weiß, dass dies als beantwortet gekennzeichnet ist, aber ich konnte dieses Problem mit gdb unter OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012))
reproduzieren und die Works-for-me-Lösung hat es nicht für mich beantwortet.
Es stellte sich heraus, dass es eine andere Frage zu SO gab, die eine funktionierende Antwort hatte, also denke ich, dass es sich lohnt, auf diese Frage einzugehen:
Warum funktioniert GDB-Casting nicht?
Die kurze Antwort ist, dass Sie Ihre Namespace-Variablen möglicherweise in einfache Anführungszeichen setzen müssen:
(gdb) p ('MyScope::MyClass'*) ptr;
Funktioniert bei mir:
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}
Für mich geht das. Was verwenden Sie (gcc-Version, Betriebssystem, Kompilierungs-Flags?)