vscode调试gstreamer源码-创新互联
1. 安装vscode插件
网站名称:vscode调试gstreamer源码-创新互联
URL链接:http://cdiso.cn/article/djcjeh.html
- C/C++
- C/C++ Extension
vscode中每个项目都有一套配置文件集合,位于.vscode目录下,其中有:
成都创新互联是一家网站设计、成都网站制作,提供网页设计,网站设计,网站制作,建网站,按需求定制网站,网站开发公司,于2013年创立是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。- tasks.json:编译的相关配置
- launch.json:debug的相关配置
- c_cpp_properties.json:c/c++程序相关配置
{"configurations": [
{"name": "Linux", # 配置标识符 linux, mac, win32
"includePath": [
"${workspaceFolder}/**" #头文件搜索路径
# **:表示递归搜索
],
"defines": [],
"compilerPath": "/usr/bin/gcc", # 编译器路径
"cStandard": "gnu11", # c语言的标准版本
"cppStandard": "gnu++14", # c++语言的标准版本
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
2.2 自定义tasks.json文件{"tasks": [
{"type": "shell",
"label": "test",
"command": "make",
// "args": [
// "-fdiagnostics-color=always",
// "-g",
// "${file}",
// "-o",
// "${fileDirname}/${fileBasenameNoExtension}"
// ],
// "options": {// "cwd": "${fileDirname}"
// },
// "problemMatcher": [
// "$gcc"
// ],
"group": {"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
其他参数含义:
- workspaceFolder:打开的vscode目录
- workspaceFolderBasename:workspaceFolder的根目录
- fileDirname: 当前VsCode打开文件的目录
- fileBasenameNoExtension:file里每个文件不带后缀
{// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{"name": "test",
"type": "cppdbg",
// debug的模式,分为launch和attach两种
"request": "launch",
// 程序可执行文件的完整路径
"program": "${workspaceFolder}/deepstream-test-rt-src-add-del",
// 传递给程序的命令行参数
"args": ["file:///opt/nvidia/deepstream/deepstream-6.0/samples/streams/sample_720p.h264"],
// 可选参数。如果为 true,则调试程序应在目标的入口点处停止
"stopAtEntry": false,
// 目标的工作目录
"cwd": "${workspaceFolder}",
// 要添加到程序环境的环境变量
"environment": [],
"externalConsole": false,
// 指示 MIDebugEngine 要连接到的控制台调试程序。允许的值为 "gdb"、"lldb"。
"MIMode": "gdb",
"setupCommands": [
{"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
// 调试会话开始前要运行的任务
"preLaunchTask": "test",
// MI 调试程序(如 gdb)的路径。如果未指定,将首先在路径中搜索调试程序
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
3. Makefile环境下使用 -g 来启动调试环境
4. Python调试{// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{ "name": "test",
"type": "python",
"request": "launch",
"program": "${workspaceRoot}/tools/inference.py",
"args": ["--config", "anomalib/models/padim/config.yaml", "--weight_path", "results/padim/mvtec/test7/weights/model.ckpt",
"--image_path", "datasets/MVTec/test7/train/good/", "--save_path", "results/padim/mvtec/test7/train_data"],
"console": "integratedTerminal",
"cwd":"${workspaceRoot}",
"justMyCode": true
}
]
}
5. 调试gstreamer源码GStreamer
是用来构建流媒体应用的开源多媒体框架(framework),其目标是要简化音/视频应用程序的开发.
使用gst-inspect1.0
工具可以获取gstreamer
中element
的信息,以multifilesrc element
为例,输入如下命令:
gst-inspect-1.0 multifilesrc
即可输出下图的信息,找到源码下载地址。
选择如下版本
下载源码,解压
编译源码可以参考如下文章【编译gstreamer插件-multifilesrc】
修改Makefile搜索
-g
选项信息将
-O2
选项修改未-O0
重新编译得到动态库
root@2a2466b40131:~/homework/gst_plugin_good/gst/multifile# make
CC test_splitmux_part_reader-test-splitmuxpartreader.o
CC test_splitmux_part_reader-gstsplitmuxpartreader.o
CC test_splitmux_part_reader-gstsplitmuxsrc.o
CC test_splitmux_part_reader-gstsplitutils.o
CC test_splitmux_part_reader-patternspec.o
CCLD test-splitmux-part-reader
CC libgstmultifile_la-gstmultifilesink.lo
CC libgstmultifile_la-gstmultifilesrc.lo
CC libgstmultifile_la-gstmultifile.lo
CC libgstmultifile_la-gstsplitfilesrc.lo
CC libgstmultifile_la-gstsplitmuxsink.lo
CC libgstmultifile_la-gstsplitmuxpartreader.lo
CC libgstmultifile_la-gstsplitmuxsrc.lo
CC libgstmultifile_la-gstsplitutils.lo
CC libgstmultifile_la-patternspec.lo
CCLD libgstmultifile.la
- 将动态库拷贝到系统路径下
make install
cp /root/homework/gst_plugin_good/bin/lib/gstreamer-1.0/libgstmultifile.so /usr/lib/x86_64-linux-gnu/gstreamer-1.0/
修改launch.json
文件内容launch.json
文件内容重点需要修改如下三个参数:
整个launch.json
文件内容如下,具体测试的pipeline
如下:
gst-launch-1.0 multifilesrc location=test%d.jpg ! jpegparse ! jpegdec ! videoconvert ! jpegenc ! multifilesink location=output%d.jpg
{// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{ "name": "test",
"type": "cppdbg",
// debug的模式,分为launch和attach两种
"request": "launch",
// 程序可执行文件的完整路径
"program": "/usr/bin/gst-launch-1.0",
// 传递给程序的命令行参数
"args":["multifilesrc", "location=test%d.jpg", "!", "jpegparse", "!", "jpegdec", "!", "videoconvert", "!", "jpegenc", "!", "multifilesink", "location=output%d.jpg"],
// 可选参数。如果为 true,则调试程序应在目标的入口点处停止
"stopAtEntry": false,
// 目标的工作目录
"cwd": "${workspaceFolder}/data",
// 要添加到程序环境的环境变量
"environment": [],
"externalConsole": false,
// 指示 MIDebugEngine 要连接到的控制台调试程序。允许的值为 "gdb"、"lldb"。
"MIMode": "gdb",
"setupCommands": [
{ "description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
// 调试会话开始前要运行的任务
// "preLaunchTask": "test",
// MI 调试程序(如 gdb)的路径。如果未指定,将首先在路径中搜索调试程序
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
输入断点在如下gst_multi_file_src_set_location
函数中打上断点,按F5启动调试,即可进行调试
在本文中,主要介绍了如何使用vscode调试C++和python程序,并进一步分析了如何调试gstreamer源码,讲述了如何调试gstreamer源码的具体流程。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站名称:vscode调试gstreamer源码-创新互联
URL链接:http://cdiso.cn/article/djcjeh.html