タグ

Cとdevelopmentに関するkenjiro_nのブックマーク (11)

  • 実行中でのコールスタックの取得と表示 - 千里霧中

    メモ用。デバッグ等で有用なコールスタックはgdbなどの各種デバッガで取得できるけれど、実行中にアプリケーション内で取得したい場合がある。 それはglibcが使えるならbacktrace()、backtrace_symbols()で実現できる。 例えば下記のコード: #include <stdio.h> #include <execinfo.h> void hoge1(void) { size_t i; void *trace[128]; char **ss_trace; size_t size = backtrace(trace, sizeof(trace) / sizeof(trace[0])); ss_trace = backtrace_symbols(trace, size); if (ss_trace == NULL) { /*Failure*/ return; } /*例えば表示

    実行中でのコールスタックの取得と表示 - 千里霧中
  • ユーニックス総合研究所

    home archives c-error-stack-trace C言語のエラー処理: スタックトレースを作成する 作成日: 2021-09-13更新日: 2023-12-24 カテゴリ: C言語 C言語のエラー処理~スタックトレース編 C言語には例外機構がありません。 そのためスタックトレースなども出力できませんが、C言語らしくスタックを自作することでスタックトレースを実現することが可能です。 この記事ではC言語で自力でスタックトレースを出力するということをやってみたいと思います。 この方法はいわゆる「こういう方法もあるよ」というエラー処理の一例であり、ベターであるかどうかは皆さんが判断してください。 ちなみに私はプログラミング言語の開発でこのようなスタックトレース機構を使っています。 今のところ便利で、特にストレスはありません。 C言語のスタックトレースについて↓を見ていきたいと思い

  • 「この位置にprintfが無いとなぜか動かないんだ。」 - Qiita

    はじめに 先日ツイッターで見かけた呟き pic.twitter.com/33Yk02hu1U — TOMO (@tomozh) October 14, 2020 そういうこともあるのか的な反応もあるようなので具体例を挙げてみることにする。 例1 所謂FizzBuzz問題。 #include <stdio.h> void fizzbuzz(int n) { int next; int i = 1; do { printf(i % 15 ? i % 5 ? i % 3 ? "%d\n" : "Fizz\n" : "Buzz\n" : "FizzBuzz\n", i); if (i++ >= n) next = 0; } while (next); } int main(void) { printf((char[]){""}); // この位置にprintfが無いとなぜか動かない fizzbuz

    「この位置にprintfが無いとなぜか動かないんだ。」 - Qiita
  • 20年物のC言語で作られたシステムのテスト工程を改善しようとした話 - Qiita

    はじめに ちょっと前に20年物のC言語で作られたシステムのテストを色々改善しようとしてみたので、この時に得たちょっとした知見を書いていこうと思います。 ※注意 記事を書くために自分のパソコンで当時を思い出しながら環境を作っているので、実際、実務でやった環境やバージョンとは違います。 また、この記事にはいくつかコードがでてきますが、すべて記事を書くために考えた疑似的な例にすぎません。 単体テスト用のテストコードの作成 20年も動いているシステムだと、もはや誰にも意味はわからんが、既存の挙動を変えてはいけない箇所がいくつもあります。 そういう箇所に手を入れざるを得ないときに、有効な方法として以下のような方法があります。 まず、既存のコードに対するテストコードを記載します。そして全て合格することを確認してから、少しづつ機能を拡張していきます。 これにより、新規機能追加が既存の機能を壊していないこ

    20年物のC言語で作られたシステムのテスト工程を改善しようとした話 - Qiita
  • GNAT開発環境について〜gcc付属ツール - Note

    2012年12月時点でのgccまたはGNAT GPLをインストールした際に付属する「公式」ツール群の紹介を行う。 多岐に渡るので、一つ一つの詳しい説明は行わない。 各ツールの細かい情報はそれぞれのドキュメントを参照して欲しい。 もし知らないツール名があったらちょっと読んでみて欲しい。 もしかしたらあなたの問題を解決するツールがあるかもしれないから。 ★は重要度。五点満点。 なおこの記事は某所のパクリです。あとAda Advent Calendarとは何の関係もありません。 gcc ★★★★★ コンパイラ。説明不要。 Adaという言語のポテンシャルを全く引き出していない上にバグの多い糞コンパイラですが、現状Ada2012が使えるフリーのAdaコンパイラはこれしかないので仕方がないです。 (別に私一人が言ってるわけでもなく、comp.lang.adaでAda, the best languag

    GNAT開発環境について〜gcc付属ツール - Note
  • はてなブログ | 無料ブログを作成しよう

    壮瞥町からもらった宿泊券でサンパレスに泊まる日(ナス多め) 昨年の晩夏に買った無印良品の漁民パンツが領を発揮しています。山登りや藪漕ぎの可能性がある日以外、夏の全てをこれで乗り切りたい。気楽にもほどがあります。 それはそうと、7月14日(日)・15日(月/祝)の2日間、壮瞥にいました。そうべつりんごめぐりで当たっ…

    はてなブログ | 無料ブログを作成しよう
  • CppcheckをEclipse CDTに組み込んで静的解析!C/C++ユーザに嬉しい『cppcheclipse』

    CppcheckをEclipse CDTに組み込んで静的解析!C/C++ユーザに嬉しい『cppcheclipse』 Eclipse CDT からCppcheckの結果が見れたら便利だなーなんて思って、Eclipseのプラグインを探してみたら、こんなのを見つけた。 cppcheclipse - Integration for cppcheck with Eclipse (CDT) - Google Project Hosting なんと語呂がいい名前。座布団一枚だ。 というわけで、試してみる。 環境# Eclipse 4.2 Juno Windows 7 Cppcheck 1.58(注:1.58でないと、Eclipse 4.2 Junoで動かなかった」 cppcheclipseのダウンロードとインストール# Eclipse CDTとCppcheckはインストールされていることが前提で。 Cp

    CppcheckをEclipse CDTに組み込んで静的解析!C/C++ユーザに嬉しい『cppcheclipse』
  • cppcheclipseでC++の静的解析 - 滴了庵日録

    EclipseのCDT(C/C++開発用プラグイン)でのC++開発で、 オープンソースの静的解析ツールcppcheckを用いてC++コードをチェックする方法のメモ。(プラットフォームはLinuxです。Windowsでは未確認) (1) 「Eclipse IDE for C/C++ Developers」をインストールする。(説明省略) (2) Eclipse で C++プロジェクトを作成する。(説明省略) (3) cppcheck をインストールする。 cppcheck は、C++用の静的解析ツールです。 下記からソースをダウンロードします。 http://sourceforge.net/projects/cppcheck/ (OS自動判定するんでLinux環境から) http://sourceforge.jp/projects/sfnet_cppcheck/releases/ (日

    cppcheclipseでC++の静的解析 - 滴了庵日録
  • Splint Home Page

    Secure Programming Lint SPecifications Lint First Aid for Programmers Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint.

  • Ubuntu の build-essentials 的なことを yum でやりたいときの方法 - tokuhirom's blog

    Ubuntu だと、開発関連のツールキットを一気にするには以下のようにすればよろしい。 apt-get install build-essentials これとおなじことを CentOS でやるには、以下のようにすればよいようです。 # yum groupinstall "Development Tools" # yum install kernel-devel kernel-headers 参考文献: Installing build-essentials in CentOS (make, gcc, gdb)

    kenjiro_n
    kenjiro_n 2013/07/23
    Cコンパイラをはじめとした基本的な開発ツールをインストールする方法。yum groupinstall "Development Tools";  yum install kernel-devel kernel-headers
  • 組み込みソフトウェアの開発手順を理解する ―― C言語でマイコンを制御するために不可欠

    ここでは,組み込みシステムで用いられるソフトウェアの開発環境についての基礎を説明します.また,C言語による開発のターゲットとなるマイコンの場合を具体的に説明します.(編集部) 組み込み機器のマイコンを動作させるためのソフトウェアは,組み込みソフトウェアと呼ばれています.組み込みソフトウェアの開発の方法には,特徴的な点があります. パソコンで動作するソフトウェアは,パソコンで開発されるのが一般的です.開発に使用しているパソコン上で,動作も確認できます.また,一つの開発ツールで,さまざま用途のソフトウェアを開発できます. これに対し,組み込みシステムのハードウェアでは,ほとんどの場合,開発ツールを動作させることはできません.開発にはパソコンを利用できますが,開発されたソフトウェアは,パソコンから設計対象となる機器に転送しなければ実行できません.設計対象のハードウェアは,開発のたびに異なるのが普

  • 1