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

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

在启动配置中没有找到任何类似的设置,示例如下:

{
    // 使用 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

6 回复

调试函数运行良好

更多关于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的日志输出重定向到调试控制台,确保测试输出能够正确显示。

回到顶部