タグ

Cに関するdharryのブックマーク (36)

  • 2007-10-08

    でかいソフトウェアの、大量のソースコードを短時間で読む必要が生じたので、その補助ツールとしてptrace(2)ベースのLinux用関数トレーサを自作しました。こういうツール上でまずソフトウェアを実行してみて、どのファイルのどの関数がどういう順で呼ばれるか把握おけば、いきなりソースコードの山と格闘を始めるより楽かなーと思いまして。せっかく作ったので公開します。 http://binary.nahi.to/hogetrace/ straceはシステムコールだけ、ltraceは共有ライブラリ(DSO)の関数呼び出しだけ*1をトレースしますが、このツールは、実行バイナリ中の自作関数の呼び出しもトレースします。例えば再帰で1から10まで足し算するソースコードを用意して % cat recursion.c #include <stdio.h> int sum(int n) { return n ==

    2007-10-08
  • 常駐型サーバープログラムのデバッグ手法

    BOOK: WEB+DB Press TITLE: 常駐型サーバーのデバッグ手法(ドラフト版) AUTHOR: (株)プリファードインフラストラクチャー 太田一樹 *注: この文章はWEB+DB PRESS Vol.48に掲載された記事のドラフト版です はじめに 今回はデバッグ関連特集ということで、常駐型サーバープログラムを作成する際のハマりどころやそれに対する解析方法・解析ツール・対策を、実際の経験を交えながら紹介したいと思います。 筆者は(株)プリファードインフラストラクチャーでインメモリ分散検索エンジン「Sedue (セデュー)」を開発しています。モバイル向け検索エンジン「エフルート」や、2008/11/6にリニューアルされました「はてなブックマーク2」などの検索バックエンドとして使われております。 この検索エンジンはいくつかの常駐型サーバープログラムから構成されており

  • [Unix] - name-3333’s memo (いい加減なこと書いてるので信用しないでください)

  • 【ハウツー】Cアプリを高速化せよ! - 正式リリースされたgoogle-perftoolsを試す (1) google-perftoolsとは | エンタープライズ | マイコミジャーナル

    google-perftoolsはGoogleによって提供されている、C/C++アプリケーションのパフォーマンスを改善するための開発ツールキットである。2005年3月に初めて公開され、およそ4年を経て7日に正式版がリリースされた。The BSD Licenseの下で提供されており、LinuxをはじめとしてFreeBSD、Mac OS X、Solaris 10、Windows XPなど、各種プラットフォームでの動作が確認されている(ただし、Linux以外については一部機能を除く)。 google-perftoolsには次に挙げる4つのツールが含まれている。 高速メモリアロケータTCMalloc ヒープチェッカー ヒーププロファイラ CPUプロファイラ TCMalloc(Thread-Caching Malloc)は通常のmallocよりも高速なメモリ割り当てを実現するライブラリであり、テスト

  • tricklib.com

    This domain may be for sale!

    dharry
    dharry 2009/01/19
    バグベアード
  • assert マクロを使う―C/C ―水無瀬の部屋

    assert( expression ) 関数型マクロ assert() は式 expression が 偽 の場合に診断メッセージを表示して関数 abort() を呼び出します。 ヘッダファイル assert.h がインクルードされる前にマクロ NDEBUG を定義するとマクロ assert() の呼び出しは除去されます。 assert() マクロは簡単な論理エラーを検出するために役立つ道具の一つです。 前提条件を仮定している場所に assert() マクロを挿入しておくと論理エラーを発見しやすくなります。 たとえば次のような前提条件を検査できます。 // 例えば引数にポインタ NULL を認めない関数の先頭で引数の仮定を検査するために // ポインタ p は NULL ではないはずだ! assert( p ); // ストリーム fp の現在位置はファイル終端ではないはずだ! asse

    dharry
    dharry 2008/09/20
    assert()重要
  • エラーチェック(assert)の利用について

    目次に戻る まずは次のようなプログラムを見てほしい。 void change_lights( int lights[5][5], int x, int y ) { int a; for(a = y-1;a <= y+1;a++){ /* (x,y)とその上下の0を1に1を0に */ switch( lights[a][x] ){ case 0: lights[a][x] = 1; break; case 1: lights[a][x] = 0; break; default: break; } } これは、何人かの学生から提出されたレポートである。 確かに動作する。しかし、lights[a][x] の添字がどうもおかしな範囲を 取っているように思える。 そこで、この関数に次のような行を追加してみた。 #include <assert.h> void change_lights( int

    dharry
    dharry 2008/09/20
    asset()重要
  • http://www04.neo-zion.jp/tips/c/stack-over-flow.html

    dharry
    dharry 2008/09/20
  • Cのかけら

    小さい C プログラムを集めています。自分用のメモ書きです。同じ動作をする Ruby のプログラムと比較しても、意外に複雑な処理を簡単に記述できるのに驚かされます。先輩達がなんでもかんでも C 言語で作って行ったのが分かる気がします。しかし、ポインタの操作やメモリ管理など初心者には地雷があちこちに埋まっていそうです。Ruby でできることは Ruby でやった方が安心です。 C の関数の使い方が分からなくなったら man sprintf のように man ページを参照できます。ヘッダーファイルは /usr/include/stdio.h のように /usr/include/ 以下に納められているようです。locate で探すのも便利です。Unix は C 言語の開発環境なのだというのが実感として分かります。 C のソースをスクリプト感覚で試すには

    dharry
    dharry 2008/09/20
    サンプル
  • http://www005.upp.so-net.ne.jp/h-masuda/cl/CKiso/index.html

    dharry
    dharry 2008/09/20
  • C言語 Super Technique 講座

    このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用

    dharry
    dharry 2008/09/20
  • Linux socket プログラミング

    Site admin: Kazuyoshi Aizawa PukiWiki 1.5.4 © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40. HTML convert time: 0.021 sec.

    dharry
    dharry 2008/09/20
  • ソースのダウンロード:入門編

    ソースのダウンロード:入門編 ソースはEUCコードでCR-LFではなく、LFのみです。必要に応じて変換してお使いください。

    dharry
    dharry 2008/09/20
    いいサンプル
  • 初級C言語Q&A

    [↑質問一覧] [ホームページ] 号別リスト コンパイラの選び方 (C MAGAZINE 1995-6) 文字列 (C MAGAZINE 1995-7) ポインタ (C MAGAZINE 1995-8) malloc, free (C MAGAZINE 1995-9) 値 (C MAGAZINE 1995-10) スタイル (C MAGAZINE 1995-11) 不定と未定義 (C MAGAZINE 1995-12) 前処理 (C MAGAZINE 1996-1) 処理系依存の問題 (C MAGAZINE 1996-2) 動かないプログラム (C MAGAZINE 1996-3) 構造体 (C MAGAZINE 1996-4) ビット操作、論理演算(C MAGAZINE 1996-5) 標準ライブラリ (C MAGAZINE 1996-6) 構造体(2) (C MAGAZINE 1996

    dharry
    dharry 2008/09/20
  • 小俣光之:コンピューターのページ(C言語講座)

    <body stylesrc="computer.htm"> <!--webbot bot="Include" tag="BODY" u-include="computer.htm" startspan --> <hr> <p align="center"><font size="6">小俣光之:コンピューターのページ(C言語講座)</font> </p> <hr> <h3 align="center"><font size="3">が出来ました。「C for UNIX」</font></h3> <p align="center"><img src="book-1.jpg" alt="book-1.jpg (46421 バイト)" width="500" height="358"></p> <p align="center"><img src="book-2.jpg" alt="book

  • C MAGAZINE - プログラミングの禁じ手Web版 C言語編

    すごい視聴率だと話題になっていたコンビニの経営を観たら、出演している加盟店のファンになってしまったんです。そこで自分も地元香川でフランチャイズ加盟をしてコンビニを経営してみたいなと思うようになりました。 https://www.sej.co.jp/owner/area/market/kagawa.php >>Read more

  • Let’s use doxygen!

    はじめに プログラマには、ドキュメント、とくにプログラムの内部仕様書を書くのが苦手、 という人が多い。 その理由は明らかであって、そもそも、ソースコードに (バグも含めて)*1 すべての仕様が子細もらさず書かれているのに、なぜ、さらにそれと独立した仕様書が必要なのかと、 (半ば気で) 思ってしまうからである。 ソースコードと独立にメンテナンスをしなければならないような仕様書は、 いずれソースコードと整合性が取れなくなって、無意味ならまだしも、 かえって害をなす存在となり果てることもある、ということを、 彼らは経験的に理解しているのである。 (*1) Ruby の作者である、まつもとゆきひろ氏は、 その著者『オブジェクト指向スクリプト言語 Ruby』の中の「付録C Ruby 用語集」で、 次のように書いている: ドキュメント まつもとの苦手なもの。彼は普段から「ソースがドキュメントだ。

    dharry
    dharry 2008/09/20
    doxygen
  • 職業としてのプログラミング

    2023/04/23 AIがもたらすプログラミングの未来 ずいぶん前に使っていたものの、かなりの間放置していたこのブログサイトですが、自分のメモ用にまた使ってみます。 最近は仕事が開発から少し離れたためにコード書く機会が少なくなってますが、ブログのタイトルの”職業としてのプログラミング”というのを考えたときに、charGPTに代表される生成AIのインパクトはものすごいですよね。 ロジックをコード化するだけなら、無料のchatGPTでも、中級者以上のことをやってのけてくれる今、初心者でもプログラミング身に付けて高収入といったような眉唾というか詐欺まがいのビジネスと、そのレベルでプログラマとしてやっていこうとする開発者はほんとに厳しくなってくると思います。ローコード、ノーコードといっているレベルでは、ある意味プログラミング言語の形態が変わった程度で、そんな大きなインパクトは感じてなかったです

  • C言語とC++言語 : C/C++によるプログラミング関連情報 (NI-Lab.'s MemoWiki - CLanguageCPPLanguage)

    C言語とC++言語 : C/C++によるプログラミング関連情報 っていうか、リンク集とか参考書籍とか。 -C/C++ Reference --http://www.cppreference.com/ -C++ reference - cppreference.com --http://ja.cppreference.com/w/cpp -リファレンス - cpprefjp C++語リファレンス --https://cpprefjp.github.io/reference.html -C++ 言語および標準ライブラリ --https://msdn.microsoft.com/ja-JP/library/hh875057.aspx -C++ 言語リファレンス --https://msdn.microsoft.com/ja-jp/library/3bstk3k5.aspx -C++ 標準ライ

  • review of C functions

    MS-Windows上では mode 文字列にはさらに 't' または 'b' を 加えることでテキストファイルとして読み書きするか、 バイナリファイルとして読み書きするかの選択ができます。 UNIX上ではその意味はありません。 fdopen関数は既に低水準でファイルが開いている場合に、 それを高水準でも扱えるように、その descriptor を扱う file stream を 作成します。 fileno関数は file stream の核をなす file descriptor の番号を返します。 fputs,puts,fgets,gets 一行読み書き #include <stdio.h> int fputs(const char *str, FILE *stream) int puts(const char *str) char* fgets( char *str, size_t s