Если у вас есть трассировка стека (и вы должны ее получить), вы можете получить доступ к адресам фреймов.
Одна функция, вызывающая проблему, должна привести к огромному скачку в указателях кадров.
Если его нет, проверьте размер стека, он может быть слишком маленьким.
РЕДАКТИРОВАТЬ: Как отладить неочевидные проблемы с VC ++? (гм ... я кодирую на Unix: /)
Элан Раскинг выступил с большой речью о расследовании в своей 2011 презентации GDC ( PDF ).
Указатель стека (на x86) хранится в регистре ESP
. Если вы посмотрите на разборку и проверите изменения ESP
, то вы сможете увидеть, какая функция увеличивает / уменьшает ее с большим значением.
Пример на викибуках :
mov eax, DWORD PTR SS:[esp]
add esp, 4
Это add esp
- это то, что вы хотите отслеживать. Если вы не используете VLA, добавленные / вычтенные значения жестко закодированы, поэтому их легко проверить.