提问人:Master_T 提问时间:10/4/2023 最后编辑:Master_T 更新时间:10/5/2023 访问量:60
从代码启动调试器时找不到 Visual Studio 调试器实例
Visual Studio debugger instance not found when launching debugger from code
问:
我正在开发一个 C# 应用程序(我们称之为 ),在某个时候,通过调用 启动另一个 C# 应用程序(我们称之为 )。
这两个应用程序都是同一 Visual Studio 解决方案的一部分(我使用的是 Visual Studio 2022)。app A
app B
Process.Start(...)
调试时,我使用 Visual Studio 调试器启动,这可以正常工作。但是,每当启动它时,我还需要进行调试。app A
app B
app A
为此,由于它不是从 Visual Studio 启动的,因此不会自动附加到调试器,因此我将以下代码添加到其方法的顶部:app B
main()
public static void Main(string[] args)
{
#if DEBUG
Debugger.Launch();
#endif
//... rest of the main()
}
这是我遇到烦人的问题的时候。这是我在执行该行代码时看到的:
如您所见,它没有检测到当前正在运行的 Visual Studio 实例,它只为我提供了启动新实例的选项。如果我这样做,调试器会附加,但是新实例没有打开解决方案,因此它没有加载正确的源代码,从而提供更差的调试体验(更不用说它浪费时间的事实,因为需要打开一个全新的 VS 实例)。
我想知道为什么会发生这种情况,因为我在在线教程中看到,您可以将其附加到应出现在列表中的正在运行的 Visual Studio 实例,那么为什么我的实例没有显示出来?
注意:我读到过,如果您以管理员身份启动了 VS 或您的应用程序,往往会发生这种情况,但事实并非如此,这里的一切都在非提升的情况下运行。
我错过了什么?
答:
如果我这样做,调试器会附加,但是新实例没有打开解决方案,因此它没有加载正确的源代码。
我按照以下步骤操作,发现当我在实时调试器窗口中选择新实例时,它可以打开并成功加载源代码。app B
1.在应用程序 A 中调用应用程序 B。
Process.Start(@"path\app B.exe");
2 选择一个新实例来调试应用程序 B,它会打开应用程序 B 解决方案,如下所示。
因为我在联机教程中看到,您可以将其附加到正在运行的 Visual Studio 实例,该实例应显示在列表中。
据我了解,当您在另一个 VS 实例中打开时,Just-In-Time Debugger 可以检测正在运行的 Visual Studio 实例。app b
本文档说明,可以使用 Visual Studio 调试器附加到正在运行的进程。
如果有任何误解,请随时告诉我。
评论
Process.Start