# 调试

Source: [https://docs.qualcomm.com/doc/80-70014-20Y/topic/debug.html](https://docs.qualcomm.com/doc/80-70014-20Y/topic/debug.html)

此处提到了可用于 VPU 和 GStreamer 插件的调试方法。

## 调试 VPU

Figure : 调试 VPU 工作流
                    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- 由 Microsoft Visio, SVG Export 生成 Debug-vpu-workflow.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="15.875in" height="4.26042in" viewbox="0 0 1143 306.75" xml:space="preserve" color-interpolation-filters="sRGB" class="st14"><v:documentproperties v:langid="2052">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st3 { fill: #000000; font-family: 黑体; font-size: 1.00001em }
.svg-1 .st4 { font-family: Arial; font-size: 1em }
.svg-1 .st5 { font-size: 1em }
.svg-1 .st6 { marker-end: url("#mrkr5-31"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st7 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.47169811320755 }
.svg-1 .st8 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st9 { font-family: 黑体; font-size: 1em }
.svg-1 .st10 { marker-end: url("#mrkr5-31"); marker-start: url("#mrkr5-62"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st11 { fill: none }
.svg-1 .st12 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st13 { marker-start: url("#mrkr5-62"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st14 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-31" class="st7" v:arrowtype="5" v:arrowsize="2" v:setback="3.55" refx="-3.55" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.12,-2.12) "></use>	</marker>	<marker id="mrkr5-62" class="st7" v:arrowtype="5" v:arrowsize="2" v:setback="0" refx="0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(2.12) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(18,-18.0001)">		<title>shape35-1</title>		<rect x="0" y="36.0002" width="1107" height="270.75" class="st1"></rect>	</g>	<g id="shape2-3" v:mid="2" v:groupcontext="shape" transform="translate(935.625,-137.664)">		<title>shape4-3</title>		<desc>Stop capturing logs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="58.5" cy="281.27" width="117" height="50.9605"></v:textrect>		<path d="M11.7 306.75 L105.3 306.75 A11.6998 11.6998 -180 0 0 117 295.05 L117 267.49 A11.6998 11.6998 -180 0 0 105.3					 255.79 L11.7 255.79 A11.6998 11.6998 -180 0 0 0 267.49 L0 295.05 A11.6998 11.6998 -180 0 0 11.7 306.75 Z" class="st2"></path>		<text x="22.5" y="285.17" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>停止捕获日志</text>		</g>	<g id="shape3-6" v:mid="3" v:groupcontext="shape" transform="translate(791.625,-137.664)">		<title>shape5-6</title>		<desc>Run the use case</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="30" y="285.17" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>运行用例</text>		</g>	<g id="shape4-9" v:mid="4" v:groupcontext="shape" transform="translate(638.625,-137.664)">		<title>shape6-9</title>		<desc>Start capturing logs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="18" y="285.17" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>开始捕获日志</text>		</g>	<g id="shape5-12" v:mid="5" v:groupcontext="shape" transform="translate(495,-137.664)">		<title>shape7-13</title>		<desc>Set the log level using debugfs node</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="18.98" y="277.37" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>使用<tspan class="st4"> </tspan><tspan class="st4">debugfs </tspan><tspan x="6" dy="1.3em" class="st5">节点设置日志级别</tspan></text>		</g>	<g id="shape6-18" v:mid="6" v:groupcontext="shape" transform="translate(180,-136.52)">		<title>shape8-18</title>		<desc>Choose the log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 -0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="18" y="285.17" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>选择日志级别</text>		</g>	<g id="shape7-21" v:mid="7" v:groupcontext="shape" transform="translate(36.375,-136.52)">		<title>shape9-22</title>		<desc>Mount debugfs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 -0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="18.98" y="285.17" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>挂载<tspan class="st4"> </tspan><tspan class="st4">debugfs</tspan></text>		</g>	<g id="shape8-26" v:mid="8" v:groupcontext="shape" v:layermember="0" transform="translate(144.375,-162)">		<title>shape10-25</title>		<path d="M0 306.75 L27.28 306.75 L27.28 306.75 L27.64 306.75" class="st6"></path>	</g>	<g id="shape9-32" v:mid="9" v:groupcontext="shape" v:layermember="0" transform="translate(603,-163.145)">		<title>shape12-31</title>		<path d="M0 306.75 L27.28 306.75 L27.28 306.75 L27.64 306.75" class="st6"></path>	</g>	<g id="shape10-37" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(746.625,-163.032)">		<title>shape13-36</title>		<path d="M0 306.75 L36.65 306.75 L36.65 306.75 L37.01 306.75" class="st6"></path>	</g>	<g id="shape11-42" v:mid="11" v:groupcontext="shape" v:layermember="0" transform="translate(899.625,-163.145)">		<title>shape14-41</title>		<path d="M0 306.75 L27.65 306.75 L27.65 306.75 L28.01 306.75" class="st6"></path>	</g>	<g id="shape12-47" v:mid="12" v:groupcontext="shape" transform="translate(342,-183.039)">		<title>shape16-46</title>		<desc>VPU driver debug log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 -0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="41.66" y="269.87" class="st8" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>VPU <tspan x="6" dy="1.2em" class="st9">驱动程序调试日志</tspan><tspan x="42" dy="1.275em" class="st9">级别</tspan></text>		</g>	<g id="shape13-52" v:mid="13" v:groupcontext="shape" transform="translate(342,-91.1448)">		<title>shape20-50</title>		<desc>VPU firmware debug log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 -0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="41.66" y="277.07" class="st8" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>VPU <tspan x="6" dy="1.275em" class="st9">固件调试日志级别</tspan></text>		</g>	<g id="shape14-56" v:mid="14" v:groupcontext="shape" v:layermember="0" transform="translate(328.5,-116.625)">		<title>shape27-54</title>		<path d="M13.5 306.75 L5.51 306.75 L5.15 306.75 L0 306.75 L0 214.86 L5.15 214.86 L5.15 214.86 L5.51 214.86" class="st10"></path>	</g>	<g id="shape15-64" v:mid="15" v:groupcontext="shape" v:layermember="0" transform="translate(288,-162)">		<title>shape28-62</title>		<path d="M0 306.75 L40.5 306.75 L0 306.75 Z" class="st11"></path>		<path d="M0 306.75 L40.5 306.75" class="st12"></path>	</g>	<g id="shape16-67" v:mid="16" v:groupcontext="shape" v:layermember="0" transform="translate(450,-116.63)">		<title>shape32-65</title>		<path d="M0 214.86 L13.5 214.86 L13.5 306.75 L0 306.75 L0 214.86 Z" class="st11"></path>		<path d="M0 214.86 L13.5 214.86 L13.5 306.75 L0 306.75" class="st12"></path>	</g>	<g id="shape17-70" v:mid="17" v:groupcontext="shape" v:layermember="0" transform="translate(463.5,-162.002)">		<title>shape33-68</title>		<path d="M31.5 305.61 L23.51 305.61 L23.15 305.61 L0 305.61 L0 306.75" class="st13"></path>	</g></g>
</svg>

以下是调试 VPU 驱动程序和 VPU 固件的步骤：
1. 使用以下命令挂载 `debugfs` 节点：
mount -t debugfs none /sys/kernel/debug/Copy to clipboard
2. 选择 VPU 驱动程序调试日志级别和调试日志值，如下表中所示。还可以使用调试日志值的位掩码选择多个调试日志级别。
| 调试日志级别 | 调试日志值 |
    | --- | --- |
    | VIDC\_ERR | 0x00000001 |
    | VIDC\_HIGH | 0x00000002 |
    | VIDC\_LOW | 0x00000004 |
    | VIDC\_PERF | 0x00000008 |
    | VIDC\_PKT | 0x00000010 |
    | VIDC\_BUS | 0x00000020 |
    | VIDC\_STAT | 0x00000040 |
    | VIDC\_ENCODER | 0x00000100 |
    | VIDC\_DECODER | 0x00000200 |
    | VIDC\_PRINTK | 0x10000000 |
    | VIDC\_FTRACE | 0x20000000 |

Note: VPU 驱动程序调试日志仅限于错误场景，默认调试级别设置为 `VIDC_ERR`。
3. 将 VPU 驱动程序调试日志值设置为 `/sys/module/iris_vpu/parameters/msm_vidc_debug`节点。
    1. 以下是启用所有消息级别的示例命令：
echo 0x1000037F > /sys/module/iris_vpu/parameters/msm_vidc_debugCopy to clipboard
4. 选择 VPU 固件调试日志级别和调试日志值，如下表中所示。还可以使用调试日志值的位掩码选择多个调试日志级别。
| 调试日志级别 | 调试日志值 |
    | --- | --- |
    | FW\_LOW | 0x00000001 |
    | FW\_MED | 0x00000002 |
    | FW\_HIGH | 0x00000004 |
    | FW\_ERROR | 0x00000008 |
    | FW\_FATAL | 0x00000010 |
    | FW\_PERF | 0x00000020 |
    | FW\_CACHE\_LOW | 0x00000100 |
    | FW\_CACHE\_MED | 0x00000200 |
    | FW\_CACHE\_HIGH | 0x00000400 |
    | FW\_CACHE\_ERROR | 0x00000800 |
    | FW\_CACHE\_FATAL | 0x00001000 |
    | FW\_CACHE\_PERF | 0x00002000 |
    | FW\_PRINTK | 0x10000000 |
    | FW\_FTRACE | 0x20000000 |

Note: VPU 固件调试日志仅限于错误和致命场景，默认调试级别设置为 `FW_ERROR |FW_FATAL`。
5. 将 VPU 固件调试日志值设置为 `/sys/module/iris_vpu/parameters/msm_fw_debug`节点。
    1. 以下是启用所有消息级别的示例命令：
echo 0x1000037F > /sys/module/iris_vpu/parameters/msm_fw_debugCopy to clipboard
6. 使用以下命令开始捕获 VPU 驱动程序和固件的内核消息并运行用例：
cat /proc/kmsgCopy to clipboard

## 调试 GStreamer 插件

Qualcomm GStreamer 视频插件符合标准 GStreamer 框架。有关 GStreamer 插件的调试方法的信息，参见 [调试 GStreamer 插件](https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html)。

Last Published: Aug 22, 2024

[Previous Topic
配置](https://docs.qualcomm.com/bundle/publicresource/80-70014-20Y/topics/configure.md) [Next Topic
参考资料](https://docs.qualcomm.com/bundle/publicresource/80-70014-20Y/topics/references.md)