Странная разница в callstack между выпуском и отладкой - PullRequest
2 голосов
/ 15 октября 2011

Я пытаюсь пройтись по стеку этого примера программы:

#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();
    }
}

В режиме отладки я получаю то, что вы ожидаете. Что-то вроде:
Sleep
FUNC3
главная

В режиме выпуска (с включенной оптимизацией указателя кадра) я получаю стек:
Sleep
главная

Куда делась функция между "main" и "sleep" при запуске релиза?

1 Ответ

2 голосов
/ 16 октября 2011

Функция была встроена.
Я просто изменяю "Расширение встроенной функции" на Only_inline (в VS2008), и появляется отсутствующая функция.:)

...