spe*_*der 10 c# debugging wpf pinvoke winmm
我有一个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);
Run Code Online (Sandbox Code Playgroud)
事实证明这很难稳定,尤其是在我打电话的时候waveOutClose,并立即waveOutOpen再次调用(通常是改变输出格式).
我怀疑这个问题可能与我上面描述的调用有关(尽管知识很少,我可能完全偏离目标).
重现问题目前证明是难以捉摸的,尽管我可以为一直看到这个问题的用户提供构建.我可能会尝试加快导致问题的操作,以便在调试器中重现问题更加确定.
关于调试器,我没有修改任何设置(包括Enable unmanaged code debugging)或任何Debug -> Exceptions...设置.说实话,我对这里提供的内容毫无头绪,所以任何提示都是受欢迎的.
异常怎么可能没有堆栈跟踪?你以前见过这个吗?救命!
Jon*_*Jon 10
你可以在调试器中做的最有用的事情是指示它打破第一次机会异常(Debug - > Exceptions):

这将导致在NullReferenceException抛出的确切位置进入调试器,这几乎是您在调试时所希望的最佳状态.
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |