kenken0807_DBメモ

つば九郎が好きなDBAです。Oracle Standard Editionでの運用やツールとかとかの備忘録。特に記載がない場合はoracle11gR2です。時々MySQL

MySQLにgdbアタッチするメモ

MySQLgdbアタッチしてソースコードからいろいろ追う方法を教わったので自分メモ。

  • gdbアタッチ
gdb -p mysqldのプロセス番号

この時点でmysqldが一時停止される。

  • ブレイクポイント
(gdb) b function_name
  • mysqld再開
(gdb) c
  • ステップ実行
(gdb) n
  • 変数確認
(gdb) p 変数名
(gdb) display 変数名
  • thread確認
(gdb) thread apply all bt
(gdb) frame スレッド番号
(gdb) bt

その他

  • innodb_prefixのサーバ変数はha_innodb.ccを見る。あとは変数名をもとに関数のあたりをつける。
  • print do_command::thd->query_string.string.strクエリ確認。
  • ファイルディスクリプタ/proc/プロセス番号/fdlsof -p プロセス番号で確認してstraceで追うstrace -f -e write,open -p プロセス番号 2>&1 | egrep -v 'write\(4[01], 'みたいな。

追記 20190530

MySQL5.7以降ぐらいからクエリ確認方法は

print do_command::thd->m_query_string

文字列が削られる場合はをつける

 set print elements 0