gdb はポインタが null かどうかを出力します。

gdb はポインタが null かどうかを出力します。

源泉:https://git.postgresql.org/cgit/postgresql.git/tree/src/backend/optimizer/plan/planner.c

(gdb) n
3556            if (root->group_pathkeys)
(gdb) s
3558            else if (root->window_pathkeys)
(gdb) print root->group_pathkeys==NULL
No symbol "NULL" in current context.
(gdb) s
3559                    root->query_pathkeys = root->window_pathkeys;
(gdb) s
query_planner (root=root@entry=0x55ffb53fdb70, qp_callback=qp_callback@entry=0x55ffb3299ee0 <standard_qp_callback>, qp_extra=qp_extra@entry=0x7ffc5db45260) at ../../Desktop/pg_sources/main/postgres/src/backend/optimizer/plan/planmain.c:219
219             fix_placeholder_input_needed_levels(root);

上記の内容に基づいて推測し、root->group_pathkeys == NULLprintroot->query_pathkeys != NULL
を活用して表現を評価することができます。その後print (root->group_pathkeys==NULL)、1を返します。

答え1

print root->group_pathkeys

一般的にゼロであることを確認するだけで十分です。

NULL通常、デバッガは宣言されていませんが、定義されているのでこれについては知りません(おそらく#define NULL 0jianが言ったようにvoidとしてキャストされたでしょう)。 (これは高価なコンパイルフラグによって変更される可能性があります。)

(また、デバッガはタイプにあまり気にしません。NULL0

上記のifは==正常でなければなりません==。それ以外の場合は、非常に興味深い内容を作成する必要があります。

関連情報