GNU/Linux >> Linux の 問題 >  >> Linux

オブジェクトのクラス タイプが A::B のような場合、アドレスから GDB を使用して C++ オブジェクト メンバーを出力する方法

これが回答済みとしてラベル付けされていることは知っていますが、OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012)) で gdb を使用してこの問題を再現できました そして、私にとってはうまくいく解決策は私にとっては答えませんでした.

SO に関する別の質問があったことが判明しましたが、それには有効な回答がありました。そのため、この質問に取り組む価値があると思います:

gdb キャストが機能しないのはなぜですか?

簡単な答えは、名前空間変数を単一引用符で囲む必要がある場合があるということです:

(gdb) p ('MyScope::MyClass'*) ptr;


私のために働く:

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}

わたしにはできる。何を使用していますか (gcc バージョン、OS、コンパイル フラグ?)


Linux
  1. gdbを使用してLinuxでCプログラムをデバッグする方法

  2. Linux – / procからインターフェイスのIpv4アドレスを取得する方法は?

  3. wget コマンドを使用してコマンド ラインからファイルをダウンロードするにはどうすればよいですか?

  1. 内部からC++ Linuxプログラムのフルパスを見つける方法は?

  2. C++ / C++11 を使用して現在の時刻 (ミリ秒単位) を出力する方法

  3. ifconfig コマンドから最初の IP アドレスをキャプチャする方法は?

  1. netplanを使用してUbuntu18.04にIPアドレスを追加するにはどうすればよいですか?

  2. LinuxでFirewalld、IPテーブル、UFWを使用してポートとIPアドレスを許可またはブロックするにはどうすればよいですか?

  3. Linux コマンドラインからランダムな MAC アドレスを生成する方法