c++ - 是否可以在编译 C++ 代码期间报告每个模块的堆栈使用情况?

标签 c++ systemc

<分区>

我用modelsim做混合语言仿真,部分代码是用SystemC(C++)写的,然后用SystemC代码就出现栈溢出。我不确定如何追踪这个问题。只是想检查是否可以在编译 C++ 代码期间报告堆栈使用情况?

最佳答案

编译器无法准确判断最大堆栈大小是多少,因为它取决于很多因素。如果你有一个递归,编译器无法预测输入是什么,如果你有线程,那么会有多个堆栈,等等。

如何追踪? 对于每个代码块,这是堆栈帧:从当前函数中第一个变量的地址,请注意第一个变量可能是按值参数(不是按引用),第一个或最后一个,取决于调用约定,到当前 block 中最后声明的变量加上最后一个变量的大小。在帧之前有返回值(类型大小)和返回地址(指针大小),所以你可以知道每个函数在堆栈上占用了多少字节,当前帧可以与第一个主(或线程入口)进行比较当您接近限制时,可变地址会提醒您。请注意,线程堆栈通常与主线程具有不同的堆栈大小。

关于c++ - 是否可以在编译 C++ 代码期间报告每个模块的堆栈使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31930541/

相关文章:

android - Qt 5.7 for Android 主 C++ 线程不连续运行

c++ - Visual C++ - 读取文本文件,输出二维数组

c++ - systemC 错误 : No instance of constructor "BlackBox<R, expR、C、expC、T、expT> ... 等

c++ - SystemC 传输级模型套接字 : Two Way Communication

c++ - 错误 : ‘sc_unit’ was not declared in this scope (SystemC-2. 3.0)

c++ - pthread_create() 和内存泄漏

C++ WM_KEYDOWN 不同的间隔

C++ 插入排序崩溃

c - SystemC 中的 OpenCV

c++ - 在 SystemC 中处理 sc_logic 值的问题