C/C+

gdbで絶対秒を日付で表示する

gdbでデバッグ時に、対象のプログラムが内部で持っている絶対秒(Unix時間)を
日付に変換して表示する方法。

バグ等でcoreファイルから原因を調査する際に欲しくなったので作ってみた。
具体的には~/.gdbinitにユーザ定義のコマンドを作って実現する。

#普通にgdbでプログラムを動かしている場合は、glibcの関数等を呼び出して変換できるはず。

coreファイル出力用のソースコード

解析用のソースコードとcoreファイルが必要なので、
グローバル変数に時刻と項番を書き込んだらabort()で自爆する単純なプログラムを作る。

printime.c

~/.gdbinitの作成

gdbinitにユーザコマンドを定義する際のフォーマットは次の通り。

↓みたいな秒とマイクロ秒の引数を渡すと日付で表示してくれるコマンドを作る。

実際に作成したgdbinitは下記。
Unix時間から表示する各要素を求めるのがとっても面倒だった。

~/.gdbinit

実行結果