web-dev-qa-db-ja.com

gdb:いくつかのデータのtypeinfoを表示

基本的に、typeid(*this).name()、つまりthisの実際のタイプを取得します。

これを(ソースコードを変更せずに)GDBで取得したいと考えています。私はprint typeid(*this)を試しましたが、typeidは不明であると表示されています(ソースファイルに含まれていないためです)。

35
Albert

次のようにptypeコマンドを使用します。

(gdb) ptype 42
type = int
48
Star Brilliant

'ptype [ARG]'コマンドはタイプを出力します。

13
t. fochtman

この質問は関連している可能性があります: gdbを使用するC++のポリモーフィッククラスのvtable

(gdb) help set print object
Set printing of object's derived type based on vtable info. 

これは正確にはtypeid()ではありませんが、ポリモーフィックポインター(たとえば、基本クラスのthis)を検査するときに、実際のオブジェクトタイプを表示する必要があります。当然、vtable(つまり、少なくとも1つの仮想メソッド)を持つクラスでのみ機能しますが、typeidでも機能します。

10
regnarg