by shigemk2

当面は技術的なことしか書かない

プログラムカウンタを使う まとめ #kernelvm

デバッガ

  • 実行中のプログラムを表示してくれる画期的な便利ツール
  • 使っているのか?
  • どうやって情報をアレしているのか

デバッグ情報とプログラム・カウンタ

  • デバッグ情報=プログラム・カウンタとプログラムの状態の対応をとるテーブル
  • そんな感じの図になっている

デバッグ情報の仲間(プロファイラ)

  • サンプリング型プロファイラ
  • 一定時間(1ms)ごとにPCを収集
  • それとデバッグ情報を対応させて、ソースコード行ごとの処理時間を推測

デバッグ情報の仲間(例外)

Linuxのget_user()

  • Linuxのget_user()

  • テーブル化

  • 要因を調べる
  • フォールとしない場合はゼロコスト

  • OSXのPFZ(preemption free zone)

  • pthread_mutex_lockのように、他のスレッドの処理を待つ処理

  • PFZ

  • 割り込み処理の中でEIPがPFZ

まとめ

  • プログラムカウンタと情報の対応付けはコンパイル時に決められる(ある程度リッチな情報をつけられる)
  • プログラム・カウンタは実行中に自動的に更新される
  • コストゼロで情報が作れる