![](/img/trans.png)
[英]How can I see SQL events (Application Insights) in the Diagnostic Tools window of Visual Studio 2015 in Console Application without using Azure?
[英]How to switch process in Visual Studio Diagnostic Tools Window?
这个线程有点旧,但我找到了一个解决方法。
在调试 Azure WebRole 时,我需要查看 iisexpress.exe 进程的诊断,但诊断工具显示的是 WaIISHost.exe 进程的数据。
这就是我所做的:
1- 在 Visual Studio 上调试我的 WebRole 时打开进程窗口 (Ctrl+Alt+Z)。
2- 在“进程”窗口中,我右键单击 iisexpress.exe 并选择“分离进程”。
3- 打开第二个 Visual Studio 并打开我在第一个上运行的相同解决方案。
4- 进入菜单“调试/附加到进程”。
5- 从正在运行的进程中选择 iisexpress.exe 然后我终于看到了 iisexpress.exe 的数据
注意:如果您没有从第一个 Visual Studio 上的目标进程分离,那么您的第二个 Visual Studio 将不会让您附加到它,因为它会抱怨在同一进程上已经有一个调试会话。
注意 2:分离的进程可能是孤立的,这意味着当您停止 Visual Studio 调试器时,它可能不会终止分离的进程,您可能需要使用进程资源管理器或其他东西手动终止它。
切换当前进程对我没有帮助。
根据我的经验,诊断工具窗口附加到正在调试的第一个进程。 我能够在解决方案属性窗口中更改项目在我的解决方案中启动的顺序,您可以在其中选择多个启动项目(通用属性>>启动项目)。 然后,我使用右侧的向上和向下箭头移动我希望“诊断工具”窗口附加到此列表顶部的项目,使其首先启动。
部分解决方案(仅针对一个项目):
最后,在我最初提出问题两年后,这个问题似乎在 Visual Studio 2019 16.5 中得到解决。
现在QTAgent.exe不再出现在进程窗口中,似乎不再使用了。 现在只有testhost.exe进程正在执行单元测试。 因此,诊断工具窗口现在可以正确显示单元测试的内存和 CPU 使用率,这是我在原始问题中尝试实现的。
准确地说,我帖子标题中的原始问题没有解决,但至少在我的情况下,我不再需要切换过程,因为诊断工具窗口现在可以开箱即用进行单元测试。
我找到了解决此问题的方法:
使用System.Threading.Thread.Sleep(15000);
延迟广告System.Threading.Thread.Sleep(15000);
在测试开始时。 在睡眠之前设置断点并在调试模式下运行测试。 当达到断点时,将调试器分离并通过 Thread.Sleep 在给定的中断处附加到 QTAgent.exe。 就我而言,我遇到了一个例外,并且还必须执行以下操作:
禁用工具->选项设置“调试->常规->启用属性评估和其他隐式函数调用”
(与 VS 16.5.4 一起使用)
我刚刚在 VS2019 16.6.1 上遇到了这个问题,并且有一个对我来说有效的解决方法。 如果我尝试通过测试资源管理器中的任何内容或通过DebugTests下拉选项调试测试,则诊断工具窗口将附加到testhost.exe而不是测试可执行文件,并且此窗口会忽略进程选择栏。
我的解决方案是选择生成测试可执行文件的项目,然后从解决方案资源管理器下的下拉菜单中选择Debug->StartNewInstance 。 以这种方式启动进程在调试窗口的进程选项卡中仅显示我的测试可执行文件,而诊断工具窗口不显示警告。
这里的区别似乎是通过测试资源管理器启动调试器意味着 Visual Studio 可以通过 testhost 了解您的测试,但直接调试项目就像附加到任何普通可执行文件一样。 这里的缺点是,如果您的测试套件很大,并且您有一个要分析的特定测试,那么您可能需要等待很长时间才能到达相关部分。
向 Microsoft 报告了一个问题,它似乎是测试工具团队正在积极开发的一个领域。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.