我有一个(复杂的)多线程应用程序,使用某些特定的数据会导致崩溃。碰撞发生在随机的位置,很明显,碰撞发生的位置不是原因。
因此,目前我假设一个非法的内存访问,其中的数据被一个线程或类似的东西覆盖。
不幸的是,这种情况仅发生在较大的数据集上,因此无法将整个过程简化为简单的事情。因此,要找到问题的根本原因,我尝试了Intel Inspector 2019-但速度慢是无法使用的。尽管应用程序通常在使用这些特定数据进行大约15分钟的密集计算后会显示问题,但在运行该检查器的同时,我需要等待一天以上的时间-并不确定崩溃是否会发生,因为检查器会大大更改整个时间。
所以我的问题是:有没有人有更好的主意/更好的工具来追踪此类非法内存访问的原因?
安迪的想法是受欢迎的!
最佳答案
您可以使用应用程序验证程序。在“基本”选项下选择“堆(带有完整)”,然后在WinDbg下运行程序。您可以找到崩溃发生的确切位置。
注意:这会很慢,但会有所帮助。