タグ

2012年12月2日のブックマーク (6件)

  • Build is money

    Build is money 1. Build is Money 発表者 : 僻地のプログラマkmt-t 2. 自己紹介 ハンドルネーム  正式には「kmt-t」  Twitter IDは「kmt_t」  はてなIDは「kmt-t2」 居住地  鳥取県出身ですが大阪に出稼ぎ中です。  鳥取社の会社に転職したのでいつか実家に帰る予定。 所属クラスタ  転職前まで組み込みの仕事をしていた関係で組み込みクラスタです。  言語はC++、C#あたりが得意です。 3. 話の前振り (1/2)昔からの疑問 某キャリア向け携帯電話開発をしていたとき  ソースコードは1000万ステップ超え。  当時(5年ぐらい前)のPCでビルド時間が3時間程度。  ビルド当番および各担当者は死ねる。  何でビルドサーバを用意しないのか?なんだかなー。 趣味Androidのソースコードをビ

    Build is money
    embedded
    embedded 2012/12/02
    Androidのビルドの高速化のためにAWSを使う話。
  • Bash One-Liners Explained, Part I: Working with files

    I love being super fast in the shell so I decided to do a new article series called Bash One-Liners Explained. It's going to be similar to my other article series - Awk One-Liners Explained, Sed One-Liners Explained, and Perl One-Liners Explained. After I'm done with this bash series, I'll release an e-book by the same title, just as I did with awk, sed, and perl series. The e-book will be availab

    Bash One-Liners Explained, Part I: Working with files
    embedded
    embedded 2012/12/02
    bashの小技集。
  • memologue - UNIX上でのC++ソフトウェア設計の定石 (2)

    鉄則2: シグナルハンドラで行ってよい処理を知ろう sigaction関数で登録したシグナルハンドラで行ってよい処理は非常に限定されている 次の3つの処理だけが許されている 自動変数の操作 “volatile sig_atomic_t” 型の大域変数の操作 「非同期シグナルセーフ」関数の呼び出し これ以外の処理を記述しないこと! 説明: シグナル受信時に何らかの処理を行うためには、シグナルハンドラと呼ばれる関数を用意し、それをsigaction関数でシグナル名と紐付けておけばOKです。しかし、シグナルハンドラ内で行ってよい処理は、上記の通り非常に限定されています。これを把握しないまま奔放なコードを書くと次のような現象が起き得ます: 問題1: プログラムがデッドロックする危険がある タイミングに依存する、再現困難なバグの原因となる デッドロックの発生が典型例だが、それ以外にも関数の戻り値不正

    memologue - UNIX上でのC++ソフトウェア設計の定石 (2)
    embedded
    embedded 2012/12/02
    printfは非同期シグナルセーフ関数ではないのでシグナルハンドラの中で呼んではいけない。
  • 普通のやつらの下を行け: BFDでデバッグ情報の取得 - bkブログ

    普通のやつらの下を行け: BFDでデバッグ情報の取得 gcc に -g オプションを与えるとデバッグ情報をバイナリに埋め込むことができます。この情報は通常 gdb などのデバッガによって利用されますが、普通のプログラムでも利用できれば何かおもしろいことができるかもしれません。 普通のやつらの下を行けの第4回として、今回は BFD (libbfd) を用いてデバッグ情報を取得する方法を取り上げたいと思います。 BFD とは BFD (Binary File Descriptor library) は各種バイナリフォーマットに対して低レベルな操作を行うためのライブラリです。 GNU binutils に含まれています。Debian GNU/Linux なら次のコマンドでインストールできます。 % sudo apt-get install binutils-dev ここでは BFD の bfd_

    embedded
    embedded 2012/12/02
    「BFD の bfd_find_nearest_line を用いてファイル名と行番号を取得するプログラムを作ってみます。」
  • tracef - function call tracer

    TOC 概要 実行例 動作環境 (OS) ダウンロード ビルド環境 ビルド手順 解析可能なプログラム スクリーンショット forkするプログラムの解析 execするプログラムの解析 再帰 マルチスレッド みんなだいすき例外スロー mainの前に呼ばれる関数 制限事項 コマンドラインオプション 仕組み (つぶやき) 類似ツール 概要 tracefは、Linux向けの「関数コールトレーサ」です。 ディストリビューションに標準で含まれているltraceコマンドに似ていますが、次のような特徴・相違点があります。 DSO(DLL)内のライブラリ関数の呼び出しだけでなく、自作の関数の呼び出しもトレースできる 関数呼び出しの親子関係をツリー状に見やすく表示できる 関数の実装されているファイル名、行番号を表示できる これらの特徴により、 未知の大きなプログラムの動きを把握したいとき ソースコードを読む上で

    embedded
    embedded 2012/12/02
    興味深い。後で試す。
  • tips : tips/02.プログラミングなど/C言語/C言語のLinux環境.txt

    gccとかgdbとかgoogle-perftoolsとか、C言語のLinux環境関連のメモ コンパイル # バージョンを確認する gcc -dumpversion # オプションつけないでコンパイル gcc xxx.c → a.out という名前の実行ファイルが出来る。実行権限もつけてくれるようだ。 # 実行ファイル名を指定したいとき gcc -o xxx xxx.c → xxx という名前の実行ファイルが出来る # その他のオプション -Wall : 警告を全部みせる -O1 (-O)  : ゆるい最適化 -O2       : 普通の最適化 (普通はこれをつかうそうだ) -O3       : 強力な最適化 (コンパイラのバグを引き当てたりするそうだ) -g (== -g2) : デバッグ用のシンボル -g3         : マクロも展開する -g

    embedded
    embedded 2012/12/02
    基本的なLinux開発ツールの使い方。よくまとまってる。