異なるバイナリを分析するために、実際のスタックメモリ使用量(予約されたスタックページだけでなく、実際に使用されたメモリ)を測定する必要があります。私は、これはls
としても、短期実行中のプログラムのために以外ls
、に適用されたとき、実際に進行し表示されませんが、それが立ち往生しています「仕事」に表示されますgdbのピークスタックポインタ値とそのPC位置を測定する
watch $sp
commands
silent
if $sp < $spnow
set $spnow=$sp
set $pcnow=$pc
print $spnow
print $pcnow
end
c
で次のことをしようとしていました/usr/lib/libc.so.6の "strcoll_l()"のような関数で使用します。おそらく、この方法論では遅すぎるでしょう。
私もvalgrind massif
ツールを調べました。スタックの使用状況をプロファイルできますが、残念なことにピーク使用量がプログラムのどの部分で発生したかを報告できないようです。
'massif'が十分に速い場合は、最大値を超えるたびにスタックトレースを取得するようにパッチを適用することを検討する必要があります。これは価値あるものであり、ビルディングブロックはすべてそこにあるはずです。 –