如何在VSCode调试模式下显示整个值

时间:2020-01-15 17:03:58

标签: debugging go visual-studio-code

在Go中进行调试时,我一直无法查看变量的全部值。当我单击一个相当长的值时,它向我显示... +#更多。但是我找不到一种方法来查看其余的价值。即使在观看模式下,它也会做同样的事情,即使当我单击复制值时,它也会复制... +#更多。这是下面的例子。有谁知道如何查看+114的其余部分?

“有些字符串真的很长。.+ 114多”

3 个答案:

答案 0 :(得分:3)

我的围棋编程需要这个答案。答案与 Tobias 提供的答案略有不同(也许我有更新版本的调试器)。

以下是如何更改您可以在调试器中看到的字符串的长度:

  1. 设置用于调试的 go 程序(安装 vs code 的 go 扩展)

  2. 在您的工作区中,将有一个 .vscode 目录。其中有一个名为launch.json 的文件。如果一个不存在,那么当您要启动调试器时,您可以创建一个。

  3. 编辑launch.json 文件。它将有一个简单的 JSON conf。扩展该 JSON 使其看起来像这样(我将最大长度扩展到 400):

    {
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    
        {
            "name": "Launch Package",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceFolder}",
            "apiVersion": 2,
            "dlvLoadConfig": {
                "followPointers": true,
                "maxVariableRecurse": 1,
                "maxStringLen": 400,
                "maxArrayValues": 64,
                "maxStructFields": -1
            }
        }
        ]
    }
    

答案 1 :(得分:2)

您可以在vscode settings.json中配置delve。

有一个名为“ maxStringLen”的参数,您可以将其设置为更高的值。 我不建议将值设置为高。如果将maxStringLen,maxArrayValues等设置为高,调试器会变得非常慢。因此,如果您在这些钻研设置下玩转而调试器变慢,则最好再次选择较低的值。

以下是显示maxStringLen和其他一些可能值的示例:

"go.delveConfig": {
    "useApiV1": false,
    "dlvLoadConfig": {
        "followPointers": true,
        "maxVariableRecurse": 3,
        "maxStringLen": 400,
        "maxArrayValues": 400,
        "maxStructFields": -1
    }
}

答案 2 :(得分:0)

我能够使用我的应用程序的本机记录器将长变量结果转储到终端。
此示例适用于 python 应用程序,但我确信还有其他语言的风格。

我的记录器已经在应用程序中设置好了,所以这很简单。在调试控制台中,我输入:

logging.warning(f"{my_very_long_var}")

...并且我在终端选项卡中获得了作为日志条目的整个结果,没有任何毫无价值的...我在调试控制台中得到的。

注意:我的记录器没有立即转储...在看到输出之前,我不得不从断点处恢复。这可能是日志记录的典型特征。