タグ

ProgrammingとCに関するkhikerのブックマーク (29)

  • C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 先日、社内で主にLinux上でC/C++を用いている開発者向けの講義をしました。 「こんなことができる」と知ってもらい、興味を持てば各自で勉強してもらおうと広く浅くツールを紹介しました。 gtags, ASan, Valgrind, addr2line, cppcheck, SystemTap, perfなどです。 興味があれば講義資料「C/C++プログラマのための開発ツール」をごらんください。 コンパイラオプション 受講者には新人やサイボウズ・ラボユースの学生もいたので基的なところから紹介しました。 C/C++コンパイラを使うときはできるだけ警告オプションをつけるのが望ましいです。 警告が出るのは自分のコードの書き方に不備があることが多いからです。 gccやclangでは-Wall -Wextraは基としてそれ以外にも有用なオプションがあります(C++

    C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ
  • enbug diary(2005-07-16)

    _ GRUB 2 昨日からやってたGate A20コードの書き直しが大体完了。 どうもこういうのにqemuを使うのはよくないらしく、 VMWareの方がチェックが厳しい(しっかりしている)のは結構興味深いですね。 qemuはかなり甘くて、qemuで動いても物のマシンでは動かんことがよくあります。 結局私は物理マシンでデバッグしまくりました。 一応これでsyslinuxと同等になったはず。 Gate A20にまつわる悪夢は A20 - a pain from the past によくまとまってますが、 他にもウェブ上を徘徊したり、 GRUB Legacyで得られた知見を基にして書いてます。 hpaのコードは使いたくないので、syslinuxのコードは一切使ってません。 Gate A20を無効にするときのチェックが厳しすぎるのが問題になる可能性が高いので、 明日もう少し弄るつもりです。 _

  • RaccによるC言語パーサ - imHo

    C言語のソースをパースしたいと思ってたときがあったな、と思い出した。RubyでRaccを使って、K&Rに載ってるBNFをわせてみたが、コンフリクトが発生する。 $ racc c.y 1 shift/reduce conflicts 2 reduce/reduce conflictsによれば「唯一ぶつかりがあるのは、if-elseのあいまいさである。」と書いてあるんだけど。「-v」オプションをつけて詳細を表示するとぶつかってるのは state 2 7) declaration : declaration_specifiers _ init_declarator_list_opt ";" 13) declaration_specifiers_opt : declaration_specifiers _ "*" shift, and go to state 36 "*" [reduce us

    RaccによるC言語パーサ - imHo
  • gonzui-win32: swiming in windows

    gonzui-win32はWindows環境で単体で利用できるgonzuiです。cygwinやrubyをインストールする必要がありません。 gonzui-win32は松が勝手に配布しているものです。gonzui-win32についてのgonzuiの開発者様への問い合わせはご遠慮ください。また、テストも不十分です。どうなっても知りません。 ダウンロード 2005-07-22: gonzui-win32-1.2.2.zip 2005-07-12: gonzui-win32-1.2.1.zip 2005-07-09: gonzui-1.2-win32.zip 2005-07-22: gonzui-win32-1.2.2-src.zip ソースコードは、svn://svn.shaka.dyndns.org/gonzui-win32/gonzui-win32/から匿名で取得することも可

    khiker
    khiker 2010/03/09
    gonzui for windows / source code reading
  • CQUAL

    New! We have switched the project over to subversion rather than cvs, so you should use that if you wish to check out the latest version. Oink is a new C/C++ toolkit that includes Cqual++, a C/C++ frontend for Cqual. Oink was developed by Dan Wilkerson. Version 0.991, a bugfix version, is available. (If you want to use flow-sensitive qualifiers, you should use version 0.981 instead.) For questions

  • 静的コード解析 - Wikipedia

    静的コード解析 (せいてきコードかいせき、static code analysis) または静的プログラム解析 (static program analysis) とは、コンピュータのソフトウェアの解析手法の一種であり、実行ファイルを実行することなく解析を行うこと。逆にソフトウェアを実行して行う解析を動的プログラム解析と呼ぶ[1]。静的コード解析はソースコードに対して行われることが多いが、少数ながらオブジェクトコードに対して行う場合もある。また、この用語は以下に列挙するツールを使用した解析を意味することが多い。人間が行う作業はインスペクション、コードレビューなどと呼ぶ。日語では静的コード分析とも訳される[2]。 ツールが行う静的コード解析の洗練度は、個々の文や宣言だけを検証するものから、プログラム全体を解析するものまで様々である。解析結果の利用も様々で、Lintのように単に指摘するだけの

  • The CScout Refactoring Browser

  • Cプログラミングのメモ

    CODE COMPLETE によると、プログラミングを上達するには日頃から よく読むこと (マニュアル・書籍・他人のソースコードなど) とよ く考えることが肝要だそうです。 何か耳寄りな情報があれば教えてくださいませ。 (ページの内容はかなり古くなっています) 目次 書籍 インターネット上の文書 ライブラリ ツール メモリプロファイラ GTK+/GNOME関連 その他 書籍 書籍の情報は 別の場所に移しました。 インターネット上の文書 Programming in C * C言語についての網羅的な情報源。 Steve Summit: C Programming FAQs: Frequently Asked Questions * 書籍版の 3/4ほどの内容。 情報源: Web版, 日語訳, 日語訳のHTML版 Henry Spencer: The Ten Commandments f

  • IPA セキュア・プログラミング講座:C / C++言語編

    IPA 独立行政法人 情報処理推進機構 セキュリティセンターによるセキュア・プログラミング講座:C / C++言語編

  • 初期化してない変数と.bssセクション

    キーワード C言語, 初期化されていない変数, 静的確保, ゼロ初期化, スタートアップ これだけは覚えよう すべての初期化していない静的に確保される変数は.bssセクションに入っていて、0で初期化される。 すべての初期化していない静的に確保される変数が0で初期化されると思っていると、上司に怒られる。 .bssって何? .bssセクションはセクションのひとつです(セクションとは何かが知りたければ、infoを読みましょう)。名前は「Block Started by Symbol(シンボル名で示された番地から始まるメモリブロック)」の頭文字からきています。 このセクションは、ELF(Executable and Linkable Format)では次のように定義されています。 .bss This section holds uninitialized data that contribute

  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

    今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。 C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。 しかし、C言語のポインタは表記に騙されやすいだけで、仕組み自体は全く難しくありません。 文法も、どこぞのPerlC++と比べたら屁でもない単純さです。 実のところ、仕様が煩雑で難しいのは、Cプリプロセッサなのであります。 普段からあまり複雑な使いかたをしないから気づかないかもしれませんが、Cプリプロセッサの置換処理は、欺瞞と裏切りに満ちた世界なのです。 これが進化するとテンプレートなどといったもっと面白いものになるのですが、今回はCプリプロセッサで計算をしちゃったりするところまで試しにやってみましょう。 (なお、GCCにより実験的に調べた記事なので、他のCコンパイラ

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
  • A.vim – A Vim Plugin You Should Know About

    This is the fifth post in the article series "Vim Plugins You Should Know About". This time I am going to introduce you to a nifty plugin called "a.vim". A.vim allows you to quickly switch between related source code files. For example, if you're programming in C, you can alternate between source.c and the corresponding header source.h by just typing :A. It saves you only a few seconds every time

    A.vim – A Vim Plugin You Should Know About
    khiker
    khiker 2009/11/06
    C言語なら、:Aで、.cファイルと.hファイルを行き来できるぽ?
  • GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん

    Twitter上で、@alohakun が言及していた GDB の reverse debugging の機能を使ってみました。 GDB にトレースと逆実行機能入ったのか。 http://www.gnu.org/software/gdb/news/reversible.html http://twitter.com/alohakun/status/4481139191 まずは簡単な使い方を説明したあとに、インストール方法を説明します。 こんなときに便利 「変なこと」が起きている大体の場所がわかっているとき デバッグ中に、大体どこで変なことが起きているかはわかっているけど、細かい場所は特定できていないとき、reverse debuggingが効果を発揮します。 GDBでステップ実行をしていて、「しまった!行きすぎた!」という経験はよくあると思います。こういうとき、今まではプログラムの実行を最

    GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん
    khiker
    khiker 2009/10/01
    reverse debugging / target record / reverse-next / record stop
  • The LLVM Compiler Infrastructure Project

    Useful Links Forums LLVM Discourse Mailing Lists: Commits List Discord (Real-time Chat): Discord IRC Channel: irc.oftc.net #llvm Calendar: LLVM Community Calendar Dev. Resources: doxygen Sources (GitHub) Code Review Blog Bug tracker Buildbot Green Dragon LNT Scan-build llvm-cov Compile-time tracker Release Emails 19.1.6: Dec 2024 19.1.5: Dec 2024 19.1.4: Nov 2024 19.1.3: Oct 2024 19.1.2: Oct 2024

  • バグを生まないコーディング法、10個の規則でソフト開発を効率化(1/3) ― EE Times Japan

    ソフトウエア開発にはバグがつきものだ。ただし、バグの発生を最小限にい止める方法がある。コーディング規則を適用してコードを記述することだ。バグが発生してからそれを発見し、修正するという通常の開発手順に比べて、簡単に、しかもコストをかけずにバグをつぶせる。 ここでは、ZigBeeを利用したセキュリティ・システムから医療機器にわたる筆者の組み込みソフトウエア開発の経験から得た、バグをなるべく発生させないコーディング規則を紹介する。 なぜコーディング規則が必要か コーディング規則は、ソフトウエア開発者に対して、コードを記述する上での規則をまとめたものである。英語のライティング教として著名な「The Elements of Style」(William Strunk Jr.、E. B. White著)の、プログラミング言語版のようなものだ。 組み込みソフトウエアにも、きれいで、正しく、簡

    khiker
    khiker 2009/05/26
    中括弧は激しく同意
  • C言語: 実行時間測定の方法

    C言語において実行時間を測定する為の方法はいくつかある。gettimeofday, clock, getrusage, timesを利用する方法である。ここではこれらの方法について検証してみる。これは2005/12/30時点での情報であり、古い亊が考えられるので注意して頂きたい。さらに、内容のほとんどはmanを移しただけなので、正確な情報を得るためにそれぞれの関数のmanを見ることを強く推奨する。 System: Linux 2.6.12 glibc: glibc 2.3.5-1ubuntu12 gettimeofdayを使用する方法 通常はこの関数を使用するのをお勧めする。 gettimeofdayはSVr4, BSD 4.3準拠である。返り値の型はsys/time.hに定義されるstruct timevalで有る。

    khiker
    khiker 2009/05/20
    時間計測
  • gcc の -Wall 以外の警告オプション - ひげぽん OSとか作っちゃうかMona-

    以前同僚の光成さんが、以下の warning オプションを使っていると書かれていたのが気になったので調べてみました。 -Wall -W -Wformat=2 -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wfloat-equal -Wpointer-arith もし上記以外にも良さげなオプションがありましたら教えてください<(_ _)> 情報源 man と info と http://sugarpot.sakura.ne.jp/yuno/?gcc%2Fwarning 。 最初は日語版の man だけを見ていたのですが、id:kazuhooku に info を見るべしと教わりました。 man も info もそうですが、日語版は情報が少なかったりするので注意。 LANG=C man gccなどとしましょう。 -Wforma

    gcc の -Wall 以外の警告オプション - ひげぽん OSとか作っちゃうかMona-
    khiker
    khiker 2008/04/30
    警告オプションについて
  • 東大の演習問題に挑戦 - ボクノス

    東大のアルゴリズムとデータ構造演習(リンク切れ)が面白そうなので演習問題を解いてみる。 課題1-A:シェルを実装せよ。 ガンバリマス。 方針 パイプもリダイレクトも無し。一番簡単そうな実装を目指します。 1行取得は面倒なのでGNU getline使います。 fork,exec,waitを使って実装します。 execはexecvpを使うことにしました。 引数の処理は、単語の先頭ポインタをargvに追加して、スペースか改行があったら\0で踏み潰していきます。 コーディング #define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <unistd.h> void prompt(void) { printf("* "); } int main(void) { /* 行の取得用 */ char *line = NULL;

    東大の演習問題に挑戦 - ボクノス
    khiker
    khiker 2008/01/31
    うはー面白そう.
  • strchr() ではまった話 - bkブログ

    strchr() ではまった話 標準Cライブラリに strchr() という関数があります。文字列の先頭から指定した文字を探すという単純な関数なのですが、先日、意外な仕様を知りました。 以下のコードを見てみます。 if (strchr("+-*/", c)) { // c は四則演算の記号かな? ... } この if 文は c が + - * / のいずれかの場合に条件が真となり、ブロック中が実行されます。…と、思いきや、実は条件が真になるケースがもうひとつありました。c が '\0' の場合です。 まさかと思って手元の Linux の man を見ると、文字列の終端のナル文字 ('\0') の扱いは明記されていません。 The strchr() function returns a pointer to the first occurrence of the character c i

    khiker
    khiker 2007/12/23
    \0も真
  • http://www.gtk.org/tutorial/

    khiker
    khiker 2007/08/23
    チュートリアル. 英語.