我正在开发一个多线程应用程序,我知道在我的应用程序中存在某种竞争条件/死锁,因为每隔一段时间,我的一个单元测试就会卡住,永远不会结束(目前我已经使用NUnit超时属性解决了这个问题)。当我调试测试时,我永远不能复制它。
我已经将ETW跟踪编码到了我的应用程序中,这对调试这个问题绝对有帮助。问题是,要执行ETW跟踪,应用程序必须由PerfView或其他与跟踪下的应用程序共享内存的应用程序启动(据我所知)。
我的问题是:有没有人知道一种方法,可以运行NUnit测试,并将ETW跟踪事件记录在一个单独的文件中,以便稍后通过PerfView运行?这样,每当我看到我的测试失败时,我就可以查看运行的跟踪并进行分析,以了解发生了什么。顺便说一下,我使用的是Resharper的NUnit runner。
欢迎任何其他方法/技术。感谢您的反馈。
发布于 2016-02-20 10:52:42
在这种情况下,您可以在构建控制器计算机上创建带有跟踪创建事件文件,在该计算机上您可能没有使用logman/PerfMon的权限/访问权限。
https://stackoverflow.com/questions/29151771
复制相似问题