gpt4 book ai didi

go - 对 vscode delve 调试器感到困惑

转载 作者:IT王子 更新时间:2023-10-29 01:01:17 27 4
gpt4 key购买 nike

我到处搜索并尽我所能,但在 VSCODE 中调试 go exe 对我来说真的很奇怪。

如果我逐步执行代码,调试器有时似乎会到处乱跳,就好像我在切换线程一样。大多数时候,如果我将鼠标悬停在变量上,什么也不会发生。如果我尝试将它们添加为 watch ,我只会得到“不可用”。我正在 IDE 中构建和运行。

我有最新版本的 go and delve。我看到我应该避免使用某些 gcflags 设置进行编译器优化,但什么也没做。不知道如何取得进展。有什么线索吗?


更新:毕竟,这只是 VSCODE 使用的构建任务中的错字。问题确实是编译器优化,需要使用以下确切语法禁用它:

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Make Prog",
"type": "shell",
"command": "go",
"args": [
"install",
"-gcflags",
"-N -l",
"./..."
],
"group": {
"kind": "build",
"isDefault": true
},


}
]

相关的还有我使用“exec”而不是“debug”来调试可执行文件。

最佳答案

Delve enables you to interact with your program by controlling the execution of the process, evaluating variables, and providing information of thread / goroutine state, CPU register state and more.

Delve 会编译当前目录下的“main”包,并开始调试。

对于你的问题:-

If I step through code, the debugger seems to jump around all over the place sometimes, as though I was switching threads

假设你有一段代码发生了错误并且你的代码出现了 panic,那么 VSCode 会让你在调试代码时跳转到其核心文件中定义的 panic 定义。

对于你的第二个问题:-

Most of the time if I hover over variables nothing happens. If I try to add them as watches I just get "unavailable".

Vs Code 只能为你提供在同一个包中定义的那些函数的定义,所以如果它们在另一个包中定义,那么你必须导入那个包,否则它会显示你 unavailable函数定义。因此,检查悬停时显示 unavailable 的正确导入。

有关更多信息,请查看 Delve Debugger 的使用文档

已编辑:即使它在使用F10时跳转,在跳转的代码后创建断点并使用F12跳转到下一个断点, 这样它就不会跳转到核心函数定义。

关于go - 对 vscode delve 调试器感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51084244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com