Golang调试问题:VSCode中delve调试器不显示t.Log("msg")输出
Golang调试问题:VSCode中delve调试器不显示t.Log(“msg”)输出

在启动配置中没有找到任何类似的设置,示例如下:
{
// 使用 IntelliSense 了解可能的属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"env": {},
"args": [
"-test.v",
"-test.run",
"TestLog"
]
}
]
}
更多关于Golang调试问题:VSCode中delve调试器不显示t.Log("msg")输出的实战教程也可以访问 https://www.itying.com/category-94-b0.html
调试函数运行良好
更多关于Golang调试问题:VSCode中delve调试器不显示t.Log("msg")输出的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
看不到日志
问题是您无法进入 t.Log 还是您没有看到 t.Log 的输出?
是的,当我点击“运行测试”按钮时可以做到,但“调试测试”按钮不接受此设置。
“调试测试”按钮将调用 delve 来运行调试。
(*testing.T).Log 实际上不会打印出记录的消息,除非测试失败。对 Log 的调用会被缓存,然后在测试完成后,testing 包会检查它是失败还是成功。如果失败,所有日志事件都会被打印出来,以期帮助用户识别问题。如果成功,则没有理由打印日志。
如果你想强制打印日志消息,请在 VS Code 的用户设置 JSON 文件中添加以下内容:
"go.testFlags": [
"-v"
]
在VSCode中使用delve调试Go测试时,t.Log()输出默认不会显示在调试控制台。这是因为delve的调试输出和测试的标准输出是分离的。
要解决这个问题,需要在launch.json配置中添加"showLog": true设置。修改后的配置如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"env": {},
"args": [
"-test.v",
"-test.run",
"TestLog"
],
"showLog": true
}
]
}
"showLog": true会强制delve显示测试的标准输出,包括t.Log()的输出。
示例测试代码:
package main
import "testing"
func TestLog(t *testing.T) {
t.Log("This message will now appear in the debug console")
t.Logf("Formatted log: %s", "debug info")
// 其他测试代码
if 1 != 1 {
t.Error("Test failed")
}
}
调试时,这些日志输出会出现在VSCode的调试控制台中。如果仍然看不到输出,可以尝试在调试配置中添加"logOutput": "rpc":
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"showLog": true,
"logOutput": "rpc",
"args": [
"-test.v",
"-test.run",
"TestLog"
]
}
"logOutput": "rpc"会将delve的日志输出重定向到调试控制台,确保测试输出能够正确显示。

