• Showing Page History #100721

Show page source of Memo #100721

= アイデア
 * DoxygenのXML出力から、関数呼び出し関係と、各関数(要素情報)を得る。
 * gcc(4.6以降)の-fstack-usage出力から、関数の個別スタック消費量を得る。
 * それらを組み合わせて、各関数の総スタック(呼び出し先の消費量を含む)を得る。

= 出力
出力は、次のような情報が含まれる。
 * 関数名、単体スタック消費量、総スタック消費量、再帰呼び出し有無、関数呼び出しの最大深さ(再帰の場合無限になる)

= ツール系統
[[Embed(全体の流れ.gv.png)]]
{{{ comment
// graphviz
digraph {
    // データ
    node[shape="box"];
    source[label="ソース"];
    xml[label="xml群"];
    mxml[label="統合xml"];
    call_data[label="コール情報"];
    stack_data[label="スタック情報"];
    func_data[label="関数情報"];
    funcstack_data[label="関数スタック情報"];
    stack_sum[label="総スタック情報"];
    // 変換
    node[shape="ellipse"];
    doxygen;
    gcc;
    merge_xml[label="①XMLマージ"];
    parse_call[label="②コール出力"];
    parse_func[label="③関数出力"];
    merge_stack[label="④関数スタックマージ"];
    sum_stack[label="⑤スタック積算"];
    // 流れ
    source->doxygen->xml->merge_xml->mxml;
    source->gcc->stack_data;
    mxml->parse_call->call_data;
    mxml->parse_func->func_data;
    func_data -> merge_stack;
    stack_data-> merge_stack -> funcstack_data;
    call_data->sum_stack;
    funcstack_data -> sum_stack -> stack_sum;
}
}}}