VisualStudioデバッガーで停止したC ++プログラムのスタックフレームを調べています。私が知りたいのは、各フレームに関連付けられているスタックの深さです。Visual Studio 2015でそれを行う方法はありますか?スタックの深さはレジスタ値に対応していますか?
これの動機は、Pythonから呼び出されるC ++コードのスタックオーバーフロー例外に問題があることです。スタック例外は、再帰的に呼び出される関数にはありません。Pythonのコードの上にあるC ++コードの深さは約10レベルです。スタックにいくつかの配列を割り当てるのは科学的なコードですが、それらが大きすぎるとは思いません。スタックが実際にこの呼び出し元またはその呼び出し元で1MBの制限に近づいているかどうかを確認したいと思います。
デバッグ->ウィンドウ->レジスタを表示してレジスタを確認します。
スタックポインタは、64ビットプロセスのESPレジスタまたはRSPです。
スタック(NTでは少なくとも64ビット)は「ダウン」するため、レジスタ値はスタックの最上位で小さくなります。
スタックにほぼ1MBの配列を割り当てるメソッドがありました...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加