У меня есть аудио-приложение WPF.
Иногда (и даже в отладчике) я вижу NullReferenceException
, который не несет в себе никакой информации о трассировке стека.
Как можно отладить такую проблему?
Некоторая предыстория:
Я P/Invoking функции в WinMM.dll
, который включает в себя регистрацию обратного вызова при вызове waveOutOpen
[DllImport("winmm.dll")]
public static extern MmResult waveOutOpen(out IntPtr phwo, IntPtr uDeviceID, WaveFmt pwfx, WaveCallbk dwCallback, IntPtr dwInstance, int fdwOpen);
Это оказалось трудно получить стабильным, особенно в том месте, где я вызываю waveOutClose
, и снова вызываю waveOutOpen
снова (обычно для изменения формата вывода).
Я подозреваю, что проблема может быть связана с вызовами, которые я описывал выше (хотя по столь маленькому знанию я мог быть полностью не целевым).
Воспроизведение проблемы в настоящее время оказывается неуловимым, хотя я могу предоставить сборку пользователю, который довольно последовательно видит эту проблему. Я могу попытаться ускорить операции, которые вызывают проблему, до такой степени, что повторение проблемы в отладчике является скорее определенной.
Что касается отладчика, я не использовал никаких настроек (включая Enable unmanaged code debugging
) или любых параметров Debug -> Exceptions...
. Честно говоря, я довольно не знаю, что здесь предлагается, поэтому любые намеки приветствуются.
Как может исключение не иметь трассировку стека? Вы видели это раньше? Помогите!