基本的に、typeid(*this).name()
、つまりthis
の実際のタイプを取得します。
これを(ソースコードを変更せずに)GDBで取得したいと考えています。私はprint typeid(*this)
を試しましたが、typeid
は不明であると表示されています(ソースファイルに含まれていないためです)。
次のようにptype
コマンドを使用します。
(gdb) ptype 42
type = int
'ptype [ARG]'コマンドはタイプを出力します。
この質問は関連している可能性があります: gdbを使用するC++のポリモーフィッククラスのvtable :
(gdb) help set print object
Set printing of object's derived type based on vtable info.
これは正確にはtypeid()ではありませんが、ポリモーフィックポインター(たとえば、基本クラスのthis
)を検査するときに、実際のオブジェクトタイプを表示する必要があります。当然、vtable(つまり、少なくとも1つの仮想メソッド)を持つクラスでのみ機能しますが、typeid
でも機能します。