= アイデア
* 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;
}
}}}