在Go中进行调试时,我一直无法查看变量的全部值。当我单击一个相当长的值时,它向我显示... +#更多。但是我找不到一种方法来查看其余的价值。即使在观看模式下,它也会做同样的事情,即使当我单击复制值时,它也会复制... +#更多。这是下面的例子。有谁知道如何查看+114的其余部分?
“有些字符串真的很长。.+ 114多”
答案 0 :(得分:3)
我的围棋编程需要这个答案。答案与 Tobias 提供的答案略有不同(也许我有更新版本的调试器)。
以下是如何更改您可以在调试器中看到的字符串的长度:
设置用于调试的 go 程序(安装 vs code 的 go 扩展)
在您的工作区中,将有一个 .vscode 目录。其中有一个名为launch.json 的文件。如果一个不存在,那么当您要启动调试器时,您可以创建一个。
编辑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}")
...并且我在终端选项卡中获得了作为日志条目的整个结果,没有任何毫无价值的...我在调试控制台中得到的。
注意:我的记录器没有立即转储...在看到输出之前,我不得不从断点处恢复。这可能是日志记录的典型特征。