debugging 将VSCode的PowerShell扩展配置为默认显示脚本终止错误的脚本堆栈跟踪

vtwuwzda  于 2023-11-22  发布在  Vscode
关注(0)|答案(1)|浏览(166)

VSCode PowerShell扩展的集成控制台中出现的脚本终止错误的默认输出对调试没有太大帮助。它只显示错误消息和错误起源的行(如果是模块函数,甚至不是实际的行,而只是调用者的位置)。
我实际上想看到的是一个完整的脚本堆栈跟踪,除了错误消息,而不必向每个脚本添加异常处理代码

示例:

Function Test-Me { 
    Test-You
}

Function Test-You {
    throw 'foo error'
}

Test-Me

字符串

实际产量:

Exception: C:\Test.ps1:6:2
Line |
   6 |      throw 'foo error'
     |      ~~~~~~~~~~~~~~~~~
     | foo error

期望输出:

Exception: C:\Test.ps1:6:2
Line |
   6 |      throw 'foo error'
     |      ~~~~~~~~~~~~~~~~~
     | foo error

at Test-You, C:\Test.ps1: line 6
at Test-Me, C:\Test.ps1: line 2
at <ScriptBlock>, C:\Test.ps1: line 10
at <ScriptBlock>, <No file>: line 1


虽然像这样的输出可以通过如下的异常处理代码轻松实现,但将此样板代码添加到需要调试的每个小代码片段中会太麻烦。

try {
    Test-Me
}
catch {
    $_ | Out-Host
    Write-Debug "`n$($_.ScriptStackTrace)" -Debug
}


虽然有一种简单的方法(也)显示脚本堆栈跟踪,但它会导致错误输出过于混乱,显示的信息比需要的更多:

# At the top of the script
$ErrorView = 'DetailedView'


有没有办法配置VSCode的PowerShell扩展来生成所需的输出?

kninwzqo

kninwzqo1#

一个简单的解决方案是添加一个“launch.json”文件。这对我来说很好,因为我把所有的小片段都放在一个文件夹中。
1.从文件夹的上下文菜单打开VSCode,或者正常启动VSCode,然后从 * 文件 * > * 打开文件夹 * 菜单项打开文件夹。
1.打开 *Run and Run * 选项卡。
1.点击 create a launch.json file 链接并选择 PowerShell,然后选择 Launch Current File。这将创建一个默认的 launch.json 文件。
1.修改script属性,将脚本调用 Package 在异常处理程序中。
1.保存 launch.json,它应该会自动保存在 .vscode 子文件夹中。
完成这些步骤后,当脚本终止错误发生时,通过F5启动的每个脚本都会产生所需的输出。您甚至可以Ctrl+单击堆栈跟踪的一行,直接跳转到引用的代码位置。


的数据

相关问题