- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我到处搜索并尽我所能,但在 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/
Delve 是一个了不起的调试器。 delve 是否支持更改的热交换或类似 java jvm 的东西?我花了很多时间将我的代码复制到 docker 的构建 vm 中,然后构建所有文件,然后构建和部署
我正在尝试使用 Delve 调试我的 Go 程序。 Delve 我可以很好地调试我的单元测试,但是,我想在 Debug模式下运行我的整个二进制文件,然后在某些断点处停止。 要正常运行我的二进制文件,我
我正在使用 "go test -v"运行大量单元测试。我想使用 delve 调试它们。当我尝试运行调试器时,出现“无法调试非主程序包” 错误。那么,如何使用 delve 调试器调试单元测试? 最佳答案
给定 Go 服务的核心转储,Delve 上是否有任何命令可以检查内存区域? 我们试图找出什么东西占用了堆。 最佳答案 上次遇到类似问题,发现这个小包https://github.com/golang/
如何通过源文件设置断点?我在 tmp.go 文件中有以下代码。 package main func main() { a, b := 1, 2 c := a + b println(
我想在使用 dlv 执行二进制文件时将参数传递给它 dlv --listen=:5432 exec /mypath/binary --config=config.toml 但是当我这样做时,出现以下错
我想调试一个子命令(我正在使用 cobra),但我不确定在涉及子命令和标志时如何使用 delve 进行测试。 这是执行我要调试的代码路径的命令: ./cmd/geronimo/geronimo rev
我刚刚安装了 delve调试代码。我试图添加几个断点,但我找不到如何删除断点。如何删除设置的断点? 最佳答案 查找现有端点: breakpoints 它应该输出这样的东西: Breakpoint 1
我从 dlv 得到这个错误 could not attach to pid 20727: decoding dwarf section info at offset 0x0: too short 二进
我正在使用 delve go 调试器来调试一些代码。当我尝试打印一个字符串变量时,它给了我一个缩写版本。 (dlv) print myString "my string...+539 more" 如何
我正在尝试设置一个可以远程连接的 headless Delve 调试器。 我无法找到一种方法来启动不会暂停我正在调试的应用程序的调试服务器。 我一直在使用 dlv attach --headless=
标题几乎说明了一切。 我知道如何设置的唯一方法是在程序运行期间或在 breakpoint main.main 之前 有没有一种方法可以通过行号来做到这一点,比如 breakpoint ./otherf
在 docker 容器中: docker run \ --rm -it \ -p 80:80 \ -p
我正在尝试检索在 Office 365 内的 Microsoft Delve 中用户个人资料中可见的技能。它在 Delve Web 应用程序中看起来像这样: 我想从我们组织中的用户个人资料中读取技能。
我使用 runtime.Breakpoint() 在我的 Go 代码中设置了一个断点,保存文件(我的编辑器,带有 go-plus installed 的 Atom,运行 go install .节省)
我到处搜索并尽我所能,但在 VSCODE 中调试 go exe 对我来说真的很奇怪。 如果我逐步执行代码,调试器有时似乎会到处乱跳,就好像我在切换线程一样。大多数时候,如果我将鼠标悬停在变量上,什么也
如何更新 Go Delve 调试器?当我尝试设置 api 版本时收到以下错误: 未知标志:--api-version 我的 dlv 看起来已经过时了: $dlv version Delve Debug
看一下这个目录结构: /root /bar go.mod go.sum main.go main_test.go /fo
我想在 VSCode 编辑器上调试 GoLang。在他们的文档中,他们说这是可能的。我正在按照以下链接在 IDE 上安装调试功能。 https://marketplace.visualstudio.c
我正在尝试关注以下 YouTube video开始使用 Go 调试。 建议遵循官方 Delve github 存储库上的 Delve 安装说明。对于 Mac 用户,它们是 as follows : 确
我是一名优秀的程序员,十分优秀!