NullReferenceException,没有堆栈跟踪……从哪里开始?
我有一个WPF音频应用程序。
偶尔(甚至在调试器中)我看到一个NullReferenceException
,它不携带堆栈跟踪信息。
如何开始调试这样的问题?
一些背景:
我在WinMM.dll
中调用/调用函数,这涉及在调用waveOutOpen
时注册回调
[DllImport("winmm.dll")] public static extern MmResult waveOutOpen(out IntPtr phwo, IntPtr uDeviceID, WaveFmt pwfx, WaveCallbk dwCallback, IntPtr dwInstance, int fdwOpen);
事实certificate这很难稳定,特别是在我调用waveOutClose
,并立即再次调用waveOutOpen
(通常是为了改变输出格式)。
我怀疑这个问题可能与我上面描述的调用有关(尽管知识很少,我可能完全偏离目标)。
现在certificate重现问题是难以捉摸的,尽管我可以为一直看到这个问题的用户提供构建。 我可能会尝试加快导致问题的操作,以便在调试器中重现问题更加确定。
关于调试器,我没有修改任何设置(包括Enable unmanaged code debugging
)或任何Debug -> Exceptions...
设置。 说实话,我对这里提供的内容毫无头绪,所以任何提示都是受欢迎的。
exception怎么可能没有堆栈跟踪? 你以前见过这个吗? 救命!
你可以在调试器中做的最有用的事情是指示它打破第一次机会exception(Debug – > Exceptions):
这将导致在抛出NullReferenceException
的确切位置进入调试器,这几乎是您在调试时所希望的最佳状态。