如何让VSCode终端显示程序返回值?解决崩溃无退出提示问题
如何让VSCode终端显示C++程序的退出返回值?
问题说明
以下C++代码因访问空指针的成员会触发程序崩溃,但当前VSCode终端执行后仅显示编译运行命令,无退出返回值提示,无法快速定位错误:
错误代码
TreeNode* root = new TreeNode(0); int i = root->left->val; // root->left是nullptr,无法访问其成员val cout << i;
当前终端输出
PS C:\Users\ValiantHeart\OneDrive\CodeFiles\CFiles> cd "c:\Users\ValiantHeart\OneDrive\CodeFiles\CFiles\" ; if ($?) { g++ 1.cpp -o ./build/1 } ; if ($?) { ./build/.\1 } PS C:\Users\ValiantHeart\OneDrive\CodeFiles\CFiles>
我们需要配置让终端显示类似Process exited after 0.7621 seconds with return value 3221225477的信息。
解决方法
方法1:修改编译运行命令
直接修改终端中执行的编译运行命令,在程序运行后自动输出退出码和运行时间:
cd "c:\Users\ValiantHeart\OneDrive\CodeFiles\CFiles\" ; if ($?) { g++ 1.cpp -o ./build/1 } ; if ($?) { $startTime = Get-Date; ./build/1; echo "Process exited after $((Get-Date) - $startTime).TotalSeconds seconds with return value $LASTEXITCODE" }
该命令会在程序运行结束后,打印出运行时长和退出返回值。
方法2:配置VSCode的tasks.json(推荐)
通过配置tasks.json实现编译运行后自动输出信息:
- 打开VSCode命令面板(快捷键
Ctrl+Shift+P),输入Tasks: Configure Task,选择对应的C++编译任务。 - 在生成的tasks.json中,添加
postTask字段,或修改原命令为组合命令。示例配置如下:
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe 生成活动文件", "command": "g++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/build/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: g++.exe", "postTask": { "command": "powershell", "args": [ "-Command", "$startTime = Get-Date; & '${fileDirname}/build/${fileBasenameNoExtension}'; echo \"Process exited after $((Get-Date) - $startTime).TotalSeconds seconds with return value $LASTEXITCODE\"" ] } } ] }
配置完成后,每次执行编译任务时,程序运行结束后终端会自动输出运行时长和退出返回值。
内容的提问来源于stack exchange,提问作者ValiantHeart
相关产品推荐
相关产品推荐

