0

我有这个错误,就像在服务窗口一样,每周发生一次或更多次: 应用程序弹出窗口:application_name - 应用程序错误:memory_location 处的指令引用了 memory_location的内存。无法“读取”内存。

  • 生产环境;
  • 多线程应用程序;
  • 每个线程执行一个任务;
  • 源代码是 C++、VC8;
  • 在发布版本中有一个 PDB 文件;
  • 使用UDP与客户端通信;
  • 无法重现开发环境中的错误;
  • 导致错误的线程中止;
  • 总是在崩溃时停止的同一个线程;

如何在以下信息的源中找到导致此错误的代码:“内存位置”?

4

2 回答 2

2

这听起来像是一个指针问题。一个好的开始是使 Dr. Watson 能够获取故障转储并将转储文件加载到 Visual Studio 中。首先阅读Dr. Watson使用指南。

您可能还想考虑使用调试监视器。在某些情况下,我发现它比 Dr. Watson 更有用。我能找到下载它的唯一链接是来自 Microsoft 的 FTP 站点。这是地址:ftp://ftp.microsoft.com/PSS/Tools/Developer Support Tools/DebugMonitor/

祝你好运!

于 2009-03-18T12:28:57.190 回答
1

你可以把每个线程在block try() 中捕获。在未处理异常的情况下 - 使用 API 函数 MiniDumpWriteDump 生成的 crashdump

PS。在 catch 块中使用此函数,您可以生成故障转储,并将此转储通过电子邮件发送给开发人员。这是标准的解决方案。

于 2009-03-18T15:48:26.197 回答