国发网站建设,品牌营销策略四种类型,小程序登录异常,青岛网站建设市场需要在服务器上用vscode调试cpp程序#xff0c;写此记录launch.json配置和相关步骤错误导致的问题 1.在需要运行程序的服务器上安装C/C Extension Pack#xff08;之前只在本地装了#xff09;#xff0c;可以支持调试C/C应用程序(设置断点#xff0c;单步执行#xff0c…需要在服务器上用vscode调试cpp程序写此记录launch.json配置和相关步骤错误导致的问题 1.在需要运行程序的服务器上安装C/C Extension Pack之前只在本地装了可以支持调试C/C应用程序(设置断点单步执行查看变量和调用栈等) 安装成功后会显示安装在了哪里
2.配置launch.json
{version: 0.2.0,//调试器一configurations: [{name: (gdb) HDR, type: cppdbg,request: launch,program: ${workspaceFolder}/Cmodel/run/xk_isp.oargs: [-if, ../../Image/input/picture1.f,-mf, ../../Image/input/picture2.f,-lf, ../../Image/input/picture3.f,-o, ../../Image/output/,-p, ./config/config.txt,-f, raw,-s, true], stopAtEntry: false, cwd: ${workspaceFolder}/Cmodel/run, environment: [],externalConsole: false,MIMode: gdb,setupCommands: [{description: Enable pretty-printing for gdb,text: -enable-pretty-printing,ignoreFailures: true},{description: Set Disassembly Flavor to Intel,text: -gdb-set disassembly-flavor intel,ignoreFailures: true},],miDebuggerPath: /usr/bin/gdb, },//调试器二{name: (gdb) noHDR,type: cppdbg,request: launch,program: ${workspaceFolder}/Cmodel/run/xk_isp.o,args: [-i, ../../Image/input/rgbb_12bpp_1920x1080_hdr.raw,-o, ../../Image/output/,-p, ./config/config_basepipe.txt,-f, rgb,-s, false], stopAtEntry: false,cwd: ${workspaceFolder}/Cmodel/run, environment: [],externalConsole: false, MIMode: gdb,setupCommands: [{description: Enable pretty-printing for gdb,text: -enable-pretty-printing,ignoreFailures: true},{description: Set Disassembly Flavor to Intel,text: -gdb-set disassembly-flavor intel,ignoreFailures: true},],miDebuggerPath: /usr/bin/gdb, }]
}“name”: “(gdb) HDR”,配置调试器名称。 因为支持同时设置多个调试器可以用不同名字区分我设置了两个这样就可以根据调试器名称任意选择对应调试器的配置而不用手动去改args的配参 “type”: “cppdbg”配置调试器类型为C调试器 launch.json支持多种类型的调试器比如js,python,c等此处是用C所以设置为cppdbg。调试器类型选对了可以避免很多不必要的问题“request”: “launch”配置调试器请求类型为launch(启动) 另外一种是attach(附加)没详细了解其中的区别用的默认值“program”: “${workspaceFolder}/Cmodel/run/xk_isp.o”,//配置可执行程序路径 ${workspaceFolder} 为vsCode打开你工程文件夹的绝对路径 ${workspaceFolder}/Cmodel/run/xk_isp.o 即工程编译链接完成后生成的可执行文件路径“args”: [“-if”, “…/…/Image/input/picture1.f”, “-mf”, “…/…/Image/input/picture2.f”, “-lf”, “…/…/Image/input/picture3.f”, “-o”, “…/…/Image/output/”, “-p”, “./config/config.txt”, “-f”, “raw”, “-s”, “true”],配置main(int argc,char* argv[])传参 等效于argc 15 argv[0] ${workspaceFolder}/Cmodel/run/xk_isp.o 执行文件的绝对路径 argv[1] “-if” argv[2] “…/…/Image/input/picture1.f” argv[3] “-mf” …“stopAtEntry”: false, 设置启动调试后不停止在第一行程序直接运行直到碰到第一个断点“cwd”: “${workspaceFolder}/Cmodel/run”, 配置可执行文件所在目录。
对于main函数带传参且参数包含相对路径的这个配置会比较重要。最开始用的${workspaceFolder}调试运行报错“找不到…/…/Image/input/picture1.f文件” 因为不用调试模式直接运行时工程是通过执行bash脚本来编译链接并运行可执行程序比如最后一行执行语句中传参的相对路径是相对本bash脚本路径也就是${workspaceFolder}/Cmodel/run, 脚本参数中的…/…/Image/input/picture1.f 即${workspaceFolder}/Image/input/picture1.f也就是文本实际所在位置。但是填了${workspaceFolder}之后launch.json中args的参数…/…/Image/input/picture1.f已经不在工程目录内了
#脚本部分贴图
cd ../build/ #makefile脚本在该目录下make cleanmake gdb -j16 ***#需要开启调试功能需要在原脚本文件中添加gdb编译选项或直接-g*** echo C Linking cd ../run/./xk_isp.o -if ../../Image/input/picture1.f -mf ../../Image/input/picture2.f -lf ../../Image/input/picture3.f -o ../../Image/output/ -p ./config/config.txt -f raw -s true
工程目录 这里有两个bash脚本只有运行命令的带参不同所以我配置了两个调试器分别对应HDR和noHdr
“externalConsole”: false, //设为false,在IDE中直接显示true是通过外部中断比如用命令行调试 这时候如果设为ture能打断点但是在断点处停不了“miDebuggerPath”: “/usr/bin/gdb”, //设置调试器路径 这里用了linux自带的gdb调试工具可以通过which gdb查询路径也可以设置为自己安装的调试器路径setupCommands不影响启动没看具体用途