2016-11-14 13 views
0

У меня есть файл дампа, собранный пользователем, который испытывает проблему при запуске моего приложения на C++, и я пытаюсь выяснить, сбой приложения. Из того, что я вижу в файле дампа, нет никаких исключений или ошибок, указывающих на сбой, и нет каких-либо тупиковых потоков, конкурирующих за мьютекс или другой объект синхронизации.Как определить, является ли файл дампа аварийным сбой

enter image description here

Расположение программы для основного потока, при которой был создан дамп вызова виртуальной функции, но виртуальные таблицы для объекта является правильной и указует на правую функцию, например, код

FindIt = m_EntityList[m_ListPos]->GetChainageOffset(X,Y,Chainage,Offset); 

и смотрит на переменные я вижу

enter image description here

Правильно ли я думать, что это, кажется, не будет ошибки страницы/незаконное разыменовать или я что-то отсутствует Вот? Я проверил все остальные потоки в пуле потоков, и они неактивны. Был ли файл дампа всегда иметь код исключения и информацию об ошибках в случае сбоя?

+0

Вы пытаетесь использовать Windbg сделать анализ на файл дампа? Он скажет вам, если exe разбился – Matt

+0

@Matt, я использовал VS2015 для отладки файла дампа, который был компилятором, используемым для разработки. У Windbg есть трудности с загрузкой всех символов. Имеет ли он какие-либо преимущества перед отладчиком VS2015, поскольку это дает мне расположение программ для каждого потока? –

+0

В обычных случаях VS будет делать. Windbg, безусловно, может получить дополнительную информацию из дампа, более подробную информацию здесь: http: //stackoverflow.com/questions/105130/why-use-windbg-vs-the-visual-studio-vs-debugger – Matt

ответ

0

Я подозреваю разыменование уже освобожденного объекта. Это может быть либо объект класса, либо некоторый объект внутри проблемного метода. Вы устанавливаете каждый указатель на NULL после использования delete/free?

// Edit: Это должно было быть комментарием вместо ответа, но я нажал неправильную кнопку (телефон приложение)

+0

Я бы также предположил разыменовать недействительный объект, но я отладчик показывает, что на память ссылаются как действительные, и я бы подумал, что это будет отображаться как ошибка страницы или подобное исключение в сводке. –

+0

Вы также проверили параметры? – woockashek