附加MSVC 2012探查器会挂起应用程序

时间:2017-07-26 12:56:49

标签: visual-studio-2012 profiler

我有一个C++应用程序(它是使用Qt 5.8库构建的,并且与PostgreSQL 9.5数据库一起使用,以防它相关)。该应用程序由MSVC 2012编译器构建,是64位应用程序,调试版和发布版本都可以自行运行并在cdb调试器下运行。

当我尝试通过Visual Studio工具(Analyze - > Profiler - > Attach)分析正在运行的应用程序时,它一旦尝试做一些有意义的事情就会立即挂起:只需调整窗口大小或点击复选框有效,但任何计算新值并将其写入数据库的尝试都不会成功,就像控制流没有从某个调用返回一样。

当我停止分析时,Studio标记为“热路径”调用序列RtlWalkFrameChain - > RtlpWalkFrameChain - > RtlpLookupFunctionEntryForStackWalks - > RtlLookupFunctionTable - > RtlAcquireSRWLockShared
RtlpWalkFrameChain拥有最大的“独家样本”数量 尝试过滤数据以排除最初的几秒运行(直到明显冻结)导致“没有呼叫树数据可用”消息。

我找不到任何有类似问题的文章或帖子 该项目是在Qt Creator中构建的(我没有Studio可以理解的项目文件,因此我无法进行“正常”性能分析)。
操作系统为Windows 7Visual Studio的确切版本为11.0.61219.00更新5.
关于这个问题的任何想法都会受到欢迎。

更新:当我尝试使用Luke Stackwalker探查器分析应用程序时,它会中止消息ERROR: StackWalk64-Endless-Callstack!。关于我发现的消息的唯一相关评论是this Stackoverflow question。当我在cdb调试器下运行应用程序,然后尝试使用Luke Stackwalker对其进行配置时,错误消息是相同的,但调试器中的后续暂停显示所有线程的正确(或至少可信)堆栈。对于工作线程调试器指向系统库中的一行代码,并且无论我做什么都不会前进(再一次,没有分析尝试,应用程序正常运行,调试器或不运行)。

0 个答案:

没有答案