我有一个C#/WPF(.net Framework,不是核心)桌面应用程序,它随机崩溃-没有警告或任何Windows通知。在Windows事件查看器中,崩溃被记录为异常代码0xc 000005,这显然表明发生了非托管内存访问冲突。
这是几周前开始的,当时正在实现一个新的相当复杂的WPF控件。除此之外,应用程序还有其他带有非托管代码的组件--但据我所知,这些组件在这几周内并没有改变。我正在开发的控件可以使用多个线程和VisualTree修改等。但是它是纯粹的WPF/.NET托管代码。
此外:这只会在我的机器上发生,如果在Visual Studio中调试。不在其他机器上;如果在调试或发布模式下单独运行应用程序,则不会;如果我附加了另一个调试器(例如ProcDump)。
Visual Studio似乎根本没有受到影响,它只是停止调试,但它肯定与我的应用崩溃有关。
我找到了这个https://learn.microsoft.com/en-us/visualstudio/debugger/using-dump-files?view=vs-2022,但这对我没有帮助。
1条答案
按热度按时间ahy6op9u1#
按照以下步骤操作:
1.在Visual Studio中打开项目/解决方案。
1.转到“调试”菜单并选择“选项”。
1.在“选项”对话框中,导航到“调试”>“转储写入”。
1.选中“在应用程序崩溃时创建转储文件”选项。
1.指定转储文件的路径和名称。您可以使用浏览按钮(...)选择位置。
建议从一个迷你转储文件开始,除非您特别需要完整转储提供的附加信息。
请记住使用调试工具(如Visual Studio的调试器)或其他专为分析内存转储而设计的专用工具来检查生成的转储文件。
https://learn.microsoft.com/en-us/visualstudio/debugger/debugger-feature-tour?view=vs-2019