タグ

ブックマーク / www.fireproject.jp (3)

  • attach

    なんらかの理由でgdbからいきなり起動できないプログラムや,今運用環境で動いているプログラムをデバッグしたい場合などには,動いているプロセスにattachしてデバッグすることができる. こんな場合に サンプルプログラム attachまでの3手順 attach後はどうするんだ? こんな場合にattachは以下のような場合に重宝するのではないだろうか. 起動手順が複雑で,起動用のスクリプトなどを使用しないと(現実的に)起動できないプロセス. 運用中のプロセスのコアを取りたい. 運用中のバグが出たが該当プロセスだけど止めることができない. サンプルプログラムでは以下のサンプルプログラムを起動し,実際にattachしてみる. includeincludeint main(int argc, char *argv[]) { int sleepSecond; if (argc > 1) { sleep

  • forkとwaitとゾンビプロセス - ファイヤープロジェクト

    forkはプロセスのコピーを作成する.そしてwaitで待つ.処理の流れが一から複数に分かれる様がフォークみたいだからforkなのだろうか. forkで何がコピーされるのか forkのサンプル wait waitのサンプル ゾンビプロセスについて forkで何がコピーされるのかforkはそれを実行したプロセスの子プロセスを作成する.子プロセスは親プロセスのコピーである.プロセスをどこまで実行したか(プログラムカウンタ?)もコピーされるので,子プロセスはforkの返り値が返るところから実行される(と,思う).あと,ファイルディスクリプタなどもオープンされていればそのままコピーされる.コピーされないのはpidやppidとファイルロックやサスペンド中のシグナルぐらいだろうか.そして,そのforkの返り値によって,プロセスは自分が親プロセスか子プロセスかを知ることができる. 成功すれば子プロセスに

    yaotti
    yaotti 2008/12/13
  • プロファイル(gcc) - ファイヤープロジェクト

    2003-07-20T15:13+09:00 matsu プログラムのパフォーマンスを効率的にあげるには,多く呼び出される関数や一番重い処理をする関数をチューニングする必要がある.ここではgccのプロファイルという機能を用いて呼び出し回数や実行時間を調べるための方法を書く. gcc -pg 例 gcc -pg方法はズバリ-pgでgccしてプログラムを実行するとファイルgmon.outが出力される.そしてgprofを実行するとプログラム中の各関数の実行時間や呼び出し回数等が表示される. 例/* profile-gcc.c */ #include <stdio.h> int hoge(); int fuga(); int foo(); int main(){ int i=0; int j=0; int k=0; for(i=0;i<10;i++){ hoge(); for(j=0;j<20;j

    yaotti
    yaotti 2008/12/10
  • 1