2014-09-23 2 views
2

Я отлаживаю вызов метода асинхронного WinRT, который терпит неудачу. Как определить, где возникает проблема? Я думаю, что это можно сделать, отслеживая, где сначала сообщается об ошибке. Любые подсказки? Я использую IDA Pro & VS 2013.Как найти, где возникает ошибка при вызове метода асинхронного вызова WinRT?

После глубоко отладки я думаю, что я нашел, где ошибка fristly чтения - по NTDLL «NtGetCompleteWnfStateSubscription» undocomented функции (вы можете проверить связанный вопрос для получения более подробной информации об этом). Но я не могу найти, какую функцию он устанавливает. Также я не могу отлаживать функцию «NtGetCompleteWnfStateSubscription», поскольку она является ядром.

Это более общий вопрос. Это происхождение от этого one.

+0

Установите точку останова на 'RoOriginateError'. Компоненты Inproc обычно называют эту функцию в точке, где генерируется ошибка. –

+0

Спасибо за совет. Я установил точку останова для этой функции, но кажется, что это называется способом после «NtGetCompleteWnfStateSubscription», который был функцией, которая действительно вызывает запрос об ошибке. – AnArrayOfFunctions

+0

Итак, кажется, что он действительно вызван, чтобы сообщить о полученной ошибке, но не указать для нее из метода WinRT. – AnArrayOfFunctions

ответ

0

То, что я обычно делаю, я обернуть вызов асинхронного в задаче с использованием create_task() и .then() лямбды - вызов task.get() в try-catch блоке. Это дает мне исключение.