GDBセッションでngx_http_variable_value_t
という構造体に遭遇し、コンソールにあるフィールドを出力したいと思います。
それは可能ですか?
GDBコマンドptype
を使用して、構造体またはクラスの定義を出力できます。
デバッグシンボルが組み込まれている場合は、次の値を出力できるはずです:print variable
またはprint *variable
構造体へのポインタの場合。
set print pretty on
このオプションは、p *my_struct_pointer
の改行とインデントも提供します。
どっちがいい:
$2 = {path = {mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600},last = {{{hash = 3537271320, len = 2}, hash_len = 12127205912}, name = 0xffff88000659501c "../b.out"}
または:
$3 = {
path = {
mnt = 0xffff8800070ce1a0,
dentry = 0xffff880006850600
},
last = {
{
{
hash = 3537271320,
len = 2
},
hash_len = 12127205912
},
name = 0xffff88000659501c "../b.out"
},
}
これは、gdbのグラフィックフロントエンドを通じてのみ実行しました。 gdbオンラインドキュメントでこのエントリを見つけました。それが役に立てば幸い。これには、デバッグ情報を含めてコードを作成する必要があると思います。
ptype [arg] ptypeはwhatisと同じ引数を受け入れますが、型の名前だけではなく、型の詳細な説明を出力します。
Data Display Debugger をご覧ください。
p *((struct my_struct*) variable)
これは、gdbの構造体の詳細を印刷するのに役立ちます