gdb

Building PHP with Debug symbol on Docker

きっかけ Docker 上の PHP でとあるテストを行っていたところ、いきなり Segmentation fault で落ちるという事件が発生。 このレベルで落ちたときは gdb をつかって調査するのだが、gdb で開いたら "No debug symbol found" と言われてしまった。 TL;DR [1] …

gdb ハッシュテーブル系 STL の要素を取り出す方法

std::unordered_map などの中身を取り出したい場合、gdb だと .at() や operator[] では print できなかった。 では、特定 key の要素を取り出すにはどうすれば良いか gdb には STL をいい感じに print してくれる拡張があり、ソースコードは python なので…

gdb においてスマートポインタは直接生ポインタに cast できる

shared_ptr 等のスマートポインタは フィールド _M_ptr に生ポインタを保管しているが、これはメモリ上では先頭にあたるので、 _M_ptr を取らなくても、先頭のアドレスから直接生ポインタに cast できる。 gdb でスマートポインタの値を表示したいときに便利…