表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
6/6

過去の記事を読んで、何言ってるのかわからんなで整理しました

自分が書いた記事なんですが

何いってるのかよくわからなくて(・_・;


直近の仕事はC++で、組み込み系の仕事を

しました。

本格的にC++で組み込みでした。


ソースコードの総量は200万STEPくらいあるかと

そう簡単に解析できる規模ではなかったです。


特にC++は小さな部品プログラムの集まりで

ソースを読んでいられなかったです


それでも不具合がでたら調査させられますから

必殺の裏技を使いました。

さいわいLinuxの環境があります。


簡単なプログラムを作って

パッケージ(ある大きな単位)下の

全ソースの急所にデバッグ印字を入れて

やりました。


手順

1、Linuxの検索コマンド(find、grep)を

使って、キーワード(調査する際に急所となる

メソッド名など、今回は通知を送信するメソッド名

を使いました)に引っかかるソース名と行数を

ファイルに出力させる)


2、出力されたファイルを読み込んで、検出された

行に来た時に、当該行を丸々一行印字するprintf文をソースに追加する、その時に通し番号も印字させる


これで実行させると、不具合が発生した箇所に

至るまでのシーケンス(通知するのは他のスレッド

に通知するので、スレッド間のデータのやり取りが

分かる、即ちシーケンスが分かる)が分かります


これで不具合の箇所を絞り、

たぶんこのプログラムが怪しいと分かったら


そこには全パスにデバッグ印字を入れて

どの処理を通ったか分かるようにします

これでほぼ不具合の原因が特定されます

(複雑でない不具合のケースですが)


全パスにデバッグ印字を入れる方法は

{を見つけたら、その下に通し番号つきの

デバッグ印字を追加するというやり方です。


簡単なプログラムを作ってしまいます。


一度全プログラムの全パスをデバッグ印字を

入れたことがあるのですが、

膨大な量の印字で、システムが立ち上がるのに

20分以上かかり、あと量が多すぎて印字結果の

解析もやっていられなかったので

上記のような2段回に分けるやり方を採用

しました。


あのわかりづらいC++のソースが

分かりやすい?C言語のように

処理ルートが分かって作業効率が上がりました


簡単な方法なんですが、周囲の人はやらないんですよね、頭良いからこういうことは不要なんでしょうか?


しかし私はこのやり方がかなりの不具合対応を

早めにできたと思います


評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ