Методы отладки стека

Я сталкиваюсь с повреждением стека, которое прерывается прямо перед возвращением wWinMain функция .. кто-нибудь может предложить мне способ или несколько советов, как отладить повреждение стека? (желательно в winDbg)

Я знаю, что повреждение происходит в процедуре, которую я написал в masm для своей программы, но стек кажется нормальным в течение всей процедуры. rsp Регистрация имеет все, что нужно в течение всего времени ..

2

Решение

Выполните это по порядку:

  • Компилируйте с предупреждением высокого уровня и исправьте большинство предупреждений
  • Запустите анализ кода проекта и исправьте предупреждения, особенно те, которые говорят о буфере / массиве / стеке и т. Д.
  • Если повреждение все еще не исправлено, уменьшите размер функции (закомментируйте верхнюю или нижнюю часть функции). Не просто return — буфер поврежденного стека все еще может быть выделен — комментирование исключит плохой стек из программного кода.
  • Рефакторинг wWinMain — разделить на подзадачи (функции). Одна из функций потерпит неудачу из-за стека, и вы обнаружите реальную проблему.
2

Другие решения

Хорошо, мне удалось отследить ошибку! Я переписал содержимое переменных по ошибке, переместив значение в qword ptr [rsp + 20h], 20h (смещение) было слишком далеко, и оно переписало мою переменную HINSTANCE. 🙂 Повреждение стека произошло вокруг переменной ‘instance’. удалось отследить с помощью WinDbg хорошую практику.

спасибо всем ответчикам.

0

По вопросам рекламы [email protected]