NullReferenceException, нет стека трассировки ... с чего начать? - PullRequest
10 голосов
/ 11 апреля 2011

У меня есть аудио приложение WPF.

Иногда (и даже в отладчике) я вижу NullReferenceException, который не несет с собой информацию трассировки стека.

Как можноначать отладку такой проблемы?

Немного предыстории:

Я P / Вызываю функции в 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....Честно говоря, я совершенно не понимаю, что здесь предлагается, поэтому любые советы приветствуются.

Как исключение может не иметь трассировки стека?Вы видели это раньше?Помогите!

1 Ответ

10 голосов
/ 11 апреля 2011

Самое полезное, что вы можете сделать в отладчике, - дать ему команду разбить исключение первого шанса (Отладка -> Исключения):

VS Exceptions window

Это приведет кВломитесь в отладчик в тот момент, когда выдается NullReferenceException, что является лучшим из того, на что вы можете надеяться при отладке.

...