2

Сначала я включил сохранение файлов дампа на Windows 10 Мобильный телефон:Проверьте файлы дампа из UWP приложения

Настройки> Обновление & безопасность> Для разработчиков> Сохранить много аварийных дампов: 3

Затем я отладил приложение, которое выбрасывало исключение. Я продолжил отладку после остановки. После отсоединения и подключения мобильного телефона я смог получить доступ к файлу дампа, хранящемуся в каталоге Windows phone\Phone\Documents\Debug. Файл называется

FPCL.WIndows - a736c773-c105-4b30-a799-4bf317872f5e with exception C000027B on 5-03-2016 12.11.dmp

и имеет около 140 МБ!

Я скопировал файл в каталог bin моего приложения UWP. Впоследствии я открыл его как файл в Visual Studio 2015 (в том же проекте). Теперь я могу видеть Dump Резюме и у меня есть следующие кнопки:

  • Debug с Managed Only
  • Debug со смешанной
  • Debug с Native Только
  • Набор путей символов
  • Копирование всех в буфер обмена

Если я бегу Debug с Управляется только я

неустранимая исключение перехватывается выполнения. См. $ Stowedexception в окне Watch для просмотра исходной информации об исключении.

и нажав Перерыв я

Нет совместимый код работает. Выбранный отладочный движок не поддерживает какой-либо код, выполняемый в текущем потоке (например, выполняется только собственный исполняемый код).

В 1 окне Watch я вижу следующее

Имя: {CLR} $ stowedexception
Значение: { "Метод или операция не выполнена."}
Тип: System.NotImplementedException

Это должно быть исключение, которое я выбрал в своем приложении. Когда я открываю этот узел и смотрю под StackTrace Я могу получить номер строки. При нажатии Продолжить я

Отладчик не может продолжить выполнение процесса. Эта операция не поддерживается при отладке файлов дампа.

Поэтому я могу только остановить его.


Если я бегу Debug со смешанным я снова

фатальная ошибка была поймана во время выполнения. См. $ Stowedexception в окне Watch для просмотра исходной информации об исключении.

и нажав Перерыв я

kernelbase.pdb не загружен kernelbase.pdb содержит отладочную информацию, необходимую, чтобы найти источник для модуля KERNELBASE.dll Модуль информация: Версия: 10.0.10586.218 (th2_release.160401-1800) Исходное местоположение: KERNELBASE.dll Попробуйте воспользоваться одним из следующих вариантов: Изменить существующие пути PDB и двоичного поиска и повторить попытку: Microsoft Symbol Servers

Здесь я могу либо нажать Нагрузка или Новое. Таким образом, kernelbase.pdb не найден в данном месте. Должна ли она существовать? Где мне его найти?

В окне Часы 1 окно я вижу то же, что и выше, и я могу только остановить его.


Если я бегу Debug с Native Только я

Необработанное исключение в 0x76ECDF95 (combase.dll) в FPCL.WIndows - f736c883-f105-4d30-a719-4bf328872f5e исключением C000027B на 5-03-2016 12.11.dmp: 0xC000027B: Anwendungsinterne Ausnahme (параметры: 0x075C6838, 0x00000002).

и нажав Перерыв я получаю ту же ошибку недостающий kernelbase, как указано выше, но здесь, в 1 окне наблюдать за Значение является Unable to evaluate the expression. Поэтому я могу только остановить это.


Согласно этому post я должен быть в состоянии проверить исходный код и найти причину. Но как правильно проверять файл дампа UWP?

+0

У меня был некоторый успех с 'уложенными исключениями', используя [windbg] (https://msdn.microsoft.com/ru -gb/library/windows/hardware/ff551063 (v = vs.85) .aspx) Вам нужно будет использовать некоторые команды, чтобы добраться до мяса исключения, которое я попробую, и выкопать их и отправить в ответ позже – SWilko

+0

use Windbg для анализа дампа: http://stackoverflow.com/a/34470061/1466046 – magicandre1981

+0

@SWilko следовать по моей ссылке. Расширение приятно показывать убранные исключения легкими – magicandre1981

ответ

2

Вы упоминаете

[...] 0xC000027B [...]

[...] $ stowedexception [...]

, которые являются показатели, в Свалке есть Скрытое исключение.

Чтобы проанализировать такие исключения, сначала просмотрите Channel 9 Defrag Tools, episode 136, где Эндрю Ричардс объясняет, а затем анализирует их (в 3:28). Затем загрузите расширение PDE из Defrag Tools OnDrive и проанализируйте свой дамп в вместо Visual Studio.

Что касается символов kernelbase, их следует загрузить с сервера символов Microsoft. Чтобы установить это в WinDbg, используйте .symfix;.reload. Если вы хотите дать ему еще одну попытку в Visual Studio, перейдите в Debug/Options и выберите Debugging/Symbols, а затем отметьте «Microsoft Symbol Servers».

Что касается кнопки, которую нужно нажать в Visual Studio, выберите «Управляемый только» при отладке отладочной сборки, потому что ваше приложение будет работать на CoreCLR и при отладке сборки релиза будет выбрано «Только родной», потому что ваше приложение будет использовать .NET встроенная поддержка времени выполнения. (Это применимо, если вы не изменили настройки по умолчанию, в противном случае выберите в соответствии с вашими настройками компиляции)

 Смежные вопросы

  • Нет связанных вопросов^_^