Тип Task
превращает все исключения в AggregateException
. Однако, если вы используете функциональность async
/ await
, то при await
a Task
внутреннее исключение разворачивается и перебрасывается, сохраняя исходную трассировку стека.
VS11 будет иметь лучшую async
поддержку отладки, но я не думаю, что возможно пойти так далеко, как вы надеетесь. Task
это все о параллельном и асинхронном коде, и поэтому я не думаю, что это когда-нибудь сработает.
Рассмотрим, например, если у вас есть Task
, работающий в потоке пула потоков, который вы собираетесь await
. Вы можете await
это в блоке try
перехватить исключение из Task
... или вы можете await
это вне блока try
, оставляя исключение Task
необработанным .
Смысл этого примера в том, что при возникновении исключения отладчик не знает , если исключение будет необработанным. В синхронном коде, как только выдается исключение, проверяется стек - и, если он не обработан, отладчик знает, что он не обработан, и может сразу предпринять специальные действия (до того, как стек будет даже размотан).
Итак, я не думаю, что можно делать то, что вы хотите. Впрочем, с IntelliTrace вы можете приблизиться (только в VS Ultimate).