callstack在发布和调试之间的奇怪区别

时间:2011-10-15 18:54:41

标签: c++ callstack

我正试图走这个示例程序的堆栈:

#include <windows.h>

void Func1()
{
    Sleep(1000);
}

void Func2()
{
    Sleep(1000);
    Func1();
}

void Func3()
{
    Sleep(1000);
    Func2();
}

void main()
{
    for (int i = 0; i < 100; i++)
    {
        Func3();
    }
}

在调试模式下,我得到了你所期望的。类似的东西:
睡眠
FUNC3
主要

在发布模式下(启用帧指针优化)我得到堆栈:
睡眠
主要

“main”和“sleep”之间的功能在发布运行中的位置是什么?

1 个答案:

答案 0 :(得分:2)

该功能已内联。
我只是将“内联函数扩展”更改为Only_inline(在VS2008中),并显示缺失的函数。 :)