Unity VS—— VS中默认调试为启动而不是附加到Unity调试

Posted ۓ明哲ڪ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity VS—— VS中默认调试为启动而不是附加到Unity调试相关的知识,希望对你有一定的参考价值。

声明:本文为个人笔记,用于学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系,违规必改。

文章目录


开发环境

Unity 2018.2.3
Visual Studio 2019(以下简称VS)

一、问题描述

通过Unity打开脚本后 visualstudio调试按钮显示为启动而非附加到Unity.如下图一所示:

图一(错误效果)

图二(正确效果)


二、问题原因及解决方案

问题产生原因:

原因一——可能未安装对应工具

猜测可能是因为VS为后期自己安装,而非安装Unity时通过它提供的选项下载安装导致VS的调试未和Unity进行完全关联(仍可通过VS菜单栏调试——附加到Unity程序进行调试,但VS默认显示按钮为启动而非附加到Unity).

原因二:当前版本对高版本VS部分功能默认不支持

Unity2018对应的默认下载VS为2017,可能该版本Unity并不能很好的支持VS2019

解决方案:

通用步骤:

打开VS安装程序 Visual Studio Installer —— 修改——单个组件——搜索Unity,并安装Visual Studio Tools for Unity.

图三

图四

打开Unity——Editor—— Preferences——External Tools —— External Script Editor选择对应VS,并且Editor Attaching勾选上.如下图所示


图五

以下解决方案均在通用步骤完成后才能进行.

解决方案一:

VS菜单栏—调试选项—附加到Unity程序调试—选择对应设备

解决方案二(推荐):

将Visual Studio 2017 Tools.unitypackage 导入Unity.文件位置如下
C:\\Program Files (x86)\\Microsoft Visual Studio Tools for Unity\\15.0
关闭重新启动Unity和VS即可.(查看)


总结

保持饥饿,保持愚蠢.

这世界唯一能够相信的就是你付出的努力和你走过的路.

VS Code 在集成终端而不是调试控制台中开始调试

【中文标题】VS Code 在集成终端而不是调试控制台中开始调试【英文标题】:VS Code starts debugging in integrated terminal instead of debug console 【发布时间】:2018-09-09 09:22:44 【问题描述】:

我使用 VS Code 已经有一段时间了,就在今天我开始遇到这个奇怪的问题。以前,如果我开始调试程序 (F5),它将开始调试并在“调试控制台”中显示输出:

但现在它在“终端”中启动调试器 并输出到“调试控制台”。

这是我的 launch.json


    "version": "0.2.0",
    "configurations": [
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "$file"
        
    ]

我希望在“调试控制台”中输出 only(以前的默认行为)。请帮我把它恢复到原来的样子。

【问题讨论】:

【参考方案1】:

编辑 3

与 python 扩展的release 2019.4.0 一样,现在可以将console 选项设置为internalConsole (#4321)。

.vscode/launch.json:

"console": "internalConsole"

编辑 2

按照omartin2010's answer 的建议,您可以另外设置选项

"internalConsoleOptions": "openOnSessionStart"

开始调试时自动打开调试控制台。

编辑 1

将 "console" 选项显式设置为 "none" 最初是可行的方法(请参阅答案),但现在“无”不再有效(请参阅上面的编辑 3)

"console": "none"

原答案

要确保将输出写入调试控制台,您可以设置debugOptions。 在 yourlaunch.json 中将以下条目添加到您的配置中应该可以修复它:

"debugOptions": [
    "RedirectOutput"
]

【讨论】:

它已经做到了。但它会打印到两个终端,当我开始调试时它会转到终端而不是调试控制台 那么可能明确设置console 选项会有所帮助。尝试设置"console": "integratedTerminal": 如果你最终需要终端,问题会更大。使用 none 代替添加新配置会更容易【参考方案2】:

最初下面的配置有效,但它似乎已被弃用,现在抛出错误:

    "console": "none" 

新的用法是:

    "console": "internalConsole"

GitHub 中记录了一个错误以更新文档here。

【讨论】:

【参考方案3】:

我遇到了同样的问题,但我通过在顶部添加一个看起来像这样的新配置来解决它:


    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "$file",
    "console": "internalConsole"
,

我发现这是一个更好的解决方案,因为我不必更改我的其他调试功能之一。在您的情况下,“Python:终端(集成)”调试选项。我需要调试控制台功能。我使用这两个函数,它们会在我希望显示输出的位置显示输出。

【讨论】:

现在我只能根据需要在调试控制台中获得输出,但是,如何让调试控制台在我开始调试时自动启动?【参考方案4】:

我猜不久前也有可能添加此选项...之前不确定是否可行:


...
            "internalConsoleOptions": "openOnSessionStart",
...

希望对你有帮助

【讨论】:

【参考方案5】:

    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "$file",
    "stopOnEntry": false,
    "console": "none"
,

这些是我的 launch.json 设置,它正在使用它。

【讨论】:

基本上,除了“stopOnEntry”属性外,答案与@SnitchingAuggie 相同。请解释为什么这很重要。【参考方案6】:

接受的答案对我不起作用,因为它似乎不是我的 VSCode Version 1.30.2 (1.30.2) 版本的选项:

Unknown console type 'none'.

我的解决方案是改用internalConsole 选项。我想它必须默认为我的版本上的integratedTerminal 选项。

这是一个例子:

NOTE: this is an example from my nodejs project but the console portion is still relevant regardless of project type. I have included more to show some context as well as other features such as envFile usage.

...    

    "type": "node",
    "request": "launch",
    "name": "Launch Program",
    "envFile": "$workspaceRoot/.env",
    "program": "$workspaceFolder/src/index.js",
    "autoAttachChildProcesses": true,
    "console": "internalConsole"
,
...

【讨论】:

OP的问题是指python调试不是nodejs 在这种情况下,项目类型实际上是无关紧要的。这通常是 IDE 设置的一个问题,适用于任何项目类型的打印输出到调试控制台。我知道如果您复制并粘贴我的完整配置可能会造成混淆,因此我会更新我的答案。【参考方案7】:

如果您像我一样并且实际上想要做相反的事情(即阻止 VSCode 自动切换到“调试控制台”选项卡,而不是仅仅停留在“终端选项卡”上),那么我发现解决方案是将此设置添加到您的 launch.json 文件中:

"avoidWindowsConsoleRedirection": true

【讨论】:

以上是关于Unity VS—— VS中默认调试为启动而不是附加到Unity调试的主要内容,如果未能解决你的问题,请参考以下文章

VS 设置调试目录

VS 设置调试异常触发

VS Code 在集成终端而不是调试控制台中开始调试

如何在顶部栏中的VS中设置“不调试就启动”

我的vs.net为啥总是无法启动调试?

VS2015中无法启动Xamarin Android调试怎么办