在进程启动时自动连接 vs code c++ 调试器
Auto connection of vs code c++ debugger on process startup
我对将 godot 作为游戏引擎以及使用 c++ 在其中进行开发的可能性非常感兴趣。我已经停止使用 gdnative 方法,因为它更快更容易(并且还让我有可能使用 CMake 而不是 SCons)。我已经安排了基于 gdnative_cpp_example 的小项目,唯一的区别是我使用了 Cmake 而不是 Scons(很高兴 godot-cpp,它用于生成绑定,SConstruct 中有 CMakeLists 脚本)。我留下的唯一问题是缺少调试 C++ 和 gdscript 代码的好方法。对于开发,我使用 vs 代码(在 windows 上),现在我找到了 3 种调试方法:
- 我可以直接从 vs 代码启动项目,稍微修改“启动”配置,以使用
--project
参数启动 godot 编辑器。这提供了调试 c++ 的能力,但不能调试 gdscript。
- 有了 vs code 的 godot-tools 扩展,我可以使用 last 来调试 gdscript,但不能使用 c++..
- 我可以从编辑器启动项目(这将使我能够调试 gdscript),然后将 vs 代码调试器附加到 运行 进程以调试 c++ dll。这可行,但我需要在启动此过程后通过选择正确的过程直接附加 vs 代码。因此我错过了初始化时间,而且感觉很笨重..
最终我想在 vs code 中同时调试 gdscript 和 c++ dll,但我不确定这是否可能..所以好的是能够从编辑器启动游戏进程并自动将 vs code 连接到它。我试图搜索类似“vs code automatic c++ debug”之类的东西,但我没有在网上找到任何东西。也许我只是在寻找不正确的术语。有人知道这个话题吗?
(我尽量让我的问题简短,但我不确定我是否提供了足够的信息,所以请随时提问)
如果你是来这里启动自动调试器的,那么也许 tenfour 对这个问题的评论可以帮助你,但是因为这个问题的主要原因有点不同(找到用 c++ 和 gdscript 调试 godot 项目的方法同时),我找到了不同的解决方案,所以如果有人出于同样的原因来到这里,这里是我想出的。首先你需要在 vscode 中正确设置 c++ 项目,它将从 godot-cpp 项目和你的个人代码编译你的 gdnative dll(我建议使用 CMake 来完成所有这些,正如我所说 godot-cpp可以与 CMake 一起工作)。第二:您的 vscode 需要 godot-tools 插件。一切正常后,dll 正在编译并且 godot 项目正在使用它,您需要设置下一个启动配置:
{
// this must be in .vscode/launch.json
"version": "0.2.0",
"configurations": [
{
"name":"godot-gdscript-attach",
"type": "godot",
"request": "launch",
"project": "${workspaceFolder}/project/",
"port": 6007,
"address": "127.0.0.1",
"launch_game_instance": false,
"launch_scene": false
},
{
"name": "godot-cpp-launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${config:godot_tools.editor_path}",
"args": [
"--debug",
"--remote-debug",
"127.0.0.1:6007",
"--path",
"\"${workspaceFolder}/project/\""
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/project/",
"environment": [],
"externalConsole": true
}
],
"compounds": [
{
"name": "godot-launch",
"configurations": [
"godot-gdscript-attach",
"godot-cpp-launch"
]
}
]
}
godot-gdscript-attach
启动后将等待 godot 游戏作为调试目标连接到 ip/port = 127.0.0.1:6007(即使您启动此配置也能正常工作,然后启动游戏来自编辑)。
godot-cpp-launch
将启动您的游戏作为 cppvsdbg
的调试目标(据我了解这是 vs 调试器)。关于这个的更多信息:
- "program": "${config:godot_tools.editor_path}" <- 这是调试程序必须 运行。我在这里使用
config:godot_tools.editor_path
作为路径,因为它是为 godot-tools 设置的选项。没什么特别的,只是方便,所以我现在可以同时更改 godot-tools 和我的调试配置的 godot 路径。
- argument "127.0.0.1:6007" <- 这是 ip 和端口,godot 将查看开始连接以进行 gdscript 调试的 ip 和端口。您可以看到为“地址”/“端口”写入了相同的值
- --path ${workspaceFolder}/project/ <- 这是项目文件夹。我的项目放在我的 vscode 项目中的“项目”文件夹中,如果您的项目在不同的文件夹中,请在此处进行配置。
之后你可以 运行 godot-launch
作为 vs 代码中的配置。这将启动您的项目并将您的两个调试器(c++ 调试器和 gdscript 调试器)连接到它。两种类型的断点都有效。
我对将 godot 作为游戏引擎以及使用 c++ 在其中进行开发的可能性非常感兴趣。我已经停止使用 gdnative 方法,因为它更快更容易(并且还让我有可能使用 CMake 而不是 SCons)。我已经安排了基于 gdnative_cpp_example 的小项目,唯一的区别是我使用了 Cmake 而不是 Scons(很高兴 godot-cpp,它用于生成绑定,SConstruct 中有 CMakeLists 脚本)。我留下的唯一问题是缺少调试 C++ 和 gdscript 代码的好方法。对于开发,我使用 vs 代码(在 windows 上),现在我找到了 3 种调试方法:
- 我可以直接从 vs 代码启动项目,稍微修改“启动”配置,以使用
--project
参数启动 godot 编辑器。这提供了调试 c++ 的能力,但不能调试 gdscript。 - 有了 vs code 的 godot-tools 扩展,我可以使用 last 来调试 gdscript,但不能使用 c++..
- 我可以从编辑器启动项目(这将使我能够调试 gdscript),然后将 vs 代码调试器附加到 运行 进程以调试 c++ dll。这可行,但我需要在启动此过程后通过选择正确的过程直接附加 vs 代码。因此我错过了初始化时间,而且感觉很笨重..
最终我想在 vs code 中同时调试 gdscript 和 c++ dll,但我不确定这是否可能..所以好的是能够从编辑器启动游戏进程并自动将 vs code 连接到它。我试图搜索类似“vs code automatic c++ debug”之类的东西,但我没有在网上找到任何东西。也许我只是在寻找不正确的术语。有人知道这个话题吗?
(我尽量让我的问题简短,但我不确定我是否提供了足够的信息,所以请随时提问)
如果你是来这里启动自动调试器的,那么也许 tenfour 对这个问题的评论可以帮助你,但是因为这个问题的主要原因有点不同(找到用 c++ 和 gdscript 调试 godot 项目的方法同时),我找到了不同的解决方案,所以如果有人出于同样的原因来到这里,这里是我想出的。首先你需要在 vscode 中正确设置 c++ 项目,它将从 godot-cpp 项目和你的个人代码编译你的 gdnative dll(我建议使用 CMake 来完成所有这些,正如我所说 godot-cpp可以与 CMake 一起工作)。第二:您的 vscode 需要 godot-tools 插件。一切正常后,dll 正在编译并且 godot 项目正在使用它,您需要设置下一个启动配置:
{
// this must be in .vscode/launch.json
"version": "0.2.0",
"configurations": [
{
"name":"godot-gdscript-attach",
"type": "godot",
"request": "launch",
"project": "${workspaceFolder}/project/",
"port": 6007,
"address": "127.0.0.1",
"launch_game_instance": false,
"launch_scene": false
},
{
"name": "godot-cpp-launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${config:godot_tools.editor_path}",
"args": [
"--debug",
"--remote-debug",
"127.0.0.1:6007",
"--path",
"\"${workspaceFolder}/project/\""
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/project/",
"environment": [],
"externalConsole": true
}
],
"compounds": [
{
"name": "godot-launch",
"configurations": [
"godot-gdscript-attach",
"godot-cpp-launch"
]
}
]
}
godot-gdscript-attach
启动后将等待 godot 游戏作为调试目标连接到 ip/port = 127.0.0.1:6007(即使您启动此配置也能正常工作,然后启动游戏来自编辑)。godot-cpp-launch
将启动您的游戏作为cppvsdbg
的调试目标(据我了解这是 vs 调试器)。关于这个的更多信息:- "program": "${config:godot_tools.editor_path}" <- 这是调试程序必须 运行。我在这里使用
config:godot_tools.editor_path
作为路径,因为它是为 godot-tools 设置的选项。没什么特别的,只是方便,所以我现在可以同时更改 godot-tools 和我的调试配置的 godot 路径。 - argument "127.0.0.1:6007" <- 这是 ip 和端口,godot 将查看开始连接以进行 gdscript 调试的 ip 和端口。您可以看到为“地址”/“端口”写入了相同的值
- --path ${workspaceFolder}/project/ <- 这是项目文件夹。我的项目放在我的 vscode 项目中的“项目”文件夹中,如果您的项目在不同的文件夹中,请在此处进行配置。
- "program": "${config:godot_tools.editor_path}" <- 这是调试程序必须 运行。我在这里使用
之后你可以 运行 godot-launch
作为 vs 代码中的配置。这将启动您的项目并将您的两个调试器(c++ 调试器和 gdscript 调试器)连接到它。两种类型的断点都有效。