Как зафиксировать повреждение стека в 64-битном приложении? - PullRequest
0 голосов
/ 19 августа 2010

в моем 64-битном приложении (Windows) происходит сбой.Я не смог ничего сделать ни путем проверки кода, ни путем проверки состояния в отладчике.(VS2008)

с некоторым инструментированным кодом, который выполняет периодические проверки экземпляра объекта значений.Этот объект, который, кажется, находится в несогласованном состоянии и генерирует нарушение прав доступа, когда мы пытаемся освободить его участников.Он содержит несколько переменных-членов с очень узкими диапазонами значений, которые могут служить проверкой общей целостности объекта.Мысли?какие-нибудь инструменты, которые могли бы помочь выяснить причину?

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Первое, что приходит на ум, это то, что ваш объект удаляется дважды, а после первого удаления память снова используется.

Вы можете использовать valgrind в Linux или Purify (для $$) в Windows для проверки памяти. Я считаю, что MS также имеет отладочную библиотеку malloc, которую вы можете использовать, но у меня нет подробностей.

1 голос
/ 19 августа 2010

Если у вас есть символы отладки для исполняемого файла, Visual Studio дает довольно хорошую трассировку стека.Если этого недостаточно, вы можете попробовать использовать WinDBG.Он имеет довольно мощные команды, связанные со стеком

...