Это не так гладко, как отображение собственного стека вызовов при обнаружении исключения, но если вы пытаетесь отследить конкретную проблему на компьютере пользователя, и пользователь достаточно опытен, вы можете заставить его запустить ваше приложение WinDbg. Он прервется, когда будет сгенерировано собственное исключение, и можно будет просмотреть стек вызовов.
Другая возможность - использовать стек-ходок. Это бесплатно и доступно здесь:
http://www.codeproject.com/KB/threads/StackWalker.aspx
Если вы знаете собственный вызов верхнего уровня, вы можете заключить его в ловушку __try / __ и использовать stackwalker для выгрузки стека в файл журнала. Предположительно, вы также можете перехватить исключение, получить стек вызовов с помощью stackwalker, добавить стек вызовов в исключение (в виде строки), а затем повторно выбросить исключение в свой код .NET. Затем код .NET может вывести стек вызовов из вашего исключения.