『壹』 android 怎麼使用應用的包名通過logcat命令來過濾某個應用的日誌
本文介紹如何在 shell 命令行中過濾 adb logcat 輸出的幾個小技巧。 開發當中經常看到別人的 log 如洪水般瞬間刷滿了屏幕,對自己有用的信息都被淹沒了,影響心情也影響效率。下面是幾個我所知道的過濾方法。 1. 只顯示需要的輸出,白名單 最方便的當然是通過管道使用 grep 過濾了,這樣可以使用 grep 強大的正則表達式匹配。簡單的匹配一行當中的某個字元串,例如 MyApp: adb logcat grep MyApp adb logcat grep -i myapp #忽略大小寫。 adb logcat grep --color=auto -i myapp #設置匹配字元串顏色。更多設置請查看 grep 幫助。 進階一點可以使用 grep 的正則表達式匹配。例如上一個例子會匹配一行中任意位置的 MyApp,可以設置為僅匹配 tag。默認的 log 輸出如下,如果修改過輸出格式相應的表達式也要修改。 I/CacheService( 665): Preparing DiskCache for all thumbnails. 可以看出 tag 是一行開頭的第三個字元開始,根據這點寫出表達式: adb logcat grep "^..MyApp" 根據這個格式也可以設置只顯示某個優先順序的 log,再匹配行首第一個字元即可。例如僅顯示 Error 級別 tag 為 MyApp 的輸出: adb logcat grep "^E.MyApp" 當然也可以匹配多個,使用 分割多個匹配表達式,要加轉義符。例如要匹配 tag 為 MyApp 和 MyActivity 的輸出: adb logcat grep "^..MyApp\^..MyActivity" adb logcat grep -E "^..MyApp^..MyActivity" #使用 egrep 無須轉義符 2. 過濾不需要的輸出,黑名單 還是使用 grep,用法也跟上面的一樣,加一個 -v 即可。例如要過濾 tag 為 MyApp 和 MyActivity 的輸出: adb logcat grep -v "^..MyApp\^..MyActivity" adb logcat grep -vE "^..MyApp^..MyActivity" #使用 egrep 無須轉義符 3. 顯示同一個進程的所有輸出 有時一個程序裡面的 tag 有多個,需要輸出該程序(同一個 PID)的所有 tag;僅使用 tag 過濾有時也會漏掉一些錯誤信息,而一般錯誤信息也是和程序同一個 PID。還是通過 grep 實現,思路是先根據包名找到 pid 號,然後匹配 pid。寫成 shell 腳本如下,參數是程序的 java 包名(如 com.android.media)。 查看源代碼列印幫助 1 #!/bin/bash 2 packageName=$1 3 pid=`adb shell ps grep $packageName awk '{print $2}'` 4 adb logcat grep --color=auto $pid 4. 從當前開始顯示 logcat 有緩存,如果僅需要查看當前開始的 log,需要清空之前的。 adb logcat -c && adb logcat 5. 過濾 log 文件 有時需要分析 log 文件,過濾 log 文件還是使用 grep。例如 log 文件為 myapp.log,要匹配 tag 為 MyApp 和 MyActivity 的輸出,然後輸出到 newmyapp.log: cat myapp.log grep "^..MyApp\^..MyActivity" > newmyapp.log Windows 下推薦使用 Notepad++,一個免費強大的記事本,支持正則表達式查找替換。可以高亮顯示匹配內容,也可以刪除不需要的內容。 以上的技巧主要用到了 grep,其實 logcat 本身也有過濾功能,可以根據 tag、優先順序過濾 log,具體請參考 Android 官方文檔 Reading and Writing Logs。如果喜歡使用圖形界面,請參考 Using DDMS,DDMS 裡面的 logcat 也可以同樣過濾。 android的logcat詳細用法 Android日誌系統提供了記錄和查看系統調試信息的功能。日誌都是從各種軟體和一些系統的緩沖區中記錄下來的,緩沖區可以通過 logcat 命 令來查看和使用. 使用logcat命令 你可以用 logcat 命令來查看系統日誌緩沖區的內容: [adb] logcat [<option>] ... [<filter-spec>] ... 請查看Listing of logcat Command Options ,它有對logcat命 令有詳細的描述 . 你也可以在你的電腦或運行在模擬器/設備上的遠程adb shell端來使用logcat命 令,也可以在你的電腦上查看日誌輸出。 $ adb logcat 你也這樣使用: # logcat 過濾日誌輸出 每一個輸出的Android日誌信息都有一個標簽和它的優先順序. 日誌的標簽是系統部件原始信息的一個簡要的標志。(比如:「View」就 是查看系統的標簽). 優先順序有下列集中,是按照從低到高順利排列的: V — Verbose (lowest priority) D — Debug I — Info W — Warning E — Error F — Fatal S — Silent (highest priority, on which nothing is ever printed) 在運行logcat的時候在前兩列的信息中你就可以看到 logcat 的標簽列表和優先順序別,它是這樣標出的:<priority>/<tag> . 下面是一個logcat輸出的例子,它的優先順序就似乎I,標簽 就是ActivityManage: I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...} 為了讓日誌輸出能體現管理的級別,你還可以用過濾器來控制日誌輸出,過濾器可以幫助你描述 系統的標簽等級. 過濾器語句按照下面的格式描tag:priority ... , tag 表 示是標簽,priority 是表示標簽的報告的最低等級. 從上面的tag的中可以得到日誌的優先順序. 你可以在過濾器中多次寫tag:priority . 這些說明都只到空白結束。下面有一個列子,例子表示支持所有的日誌信息,除了那些標簽 為」ActivityManager」和優先順序為」Info」以上的和標簽為」 MyApp」和優先順序為」 Debug」以上的。 小等級,優先權報告為tag. adb logcat ActivityManager:I MyApp:D *:S 上面表達式的最後的元素 *:S ,,是設置所有的標 簽為」silent」,所有日誌只顯示有」View」 and 「MyApp」的,用 *:S 的另一個用處是 能夠確保日誌輸出的時候是按照過濾器的說明限制的,也讓過濾器也作為一項輸出到日誌中. 下面的過濾語句指顯示優先順序為warning或更高的日誌信息: adb logcat *:W 如果你電腦上運行logcat ,相比在遠程adbshell端,你還可以 為環境變數ANDROID_LOG_TAGS :輸入一個參數來設置默認的過濾 export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S" 需要注意的是ANDROID_LOG_TAGS 過濾器如果 通過遠程shell運行logcat 或 用adb shell logcat 來 運行模擬器/設備不能輸出日誌. 控制 日誌輸出格式 日誌信息包括了許多元數據域包括標簽和優先順序。可以修改日誌的輸出格式,所以可以顯示出特 定的元數據域。可以通過 -v 選項得到格式化輸出日誌的相關信息. brief — Display priority/tag and PID of originating process (the default format). process — Display PID only. tag — Display the priority/tag only. thread — Display process:thread and priority/tag only. raw — Display the raw log message, with no other metadata fields. time — Display the date, invocation time, priority/tag, and PID of the originating process. long — Display all metadata fields and separate messages with a blank lines. 當啟動了logcat ,你可以通過-v 選 項來指定輸出格式: [adb] logcat [-v <format>] 下面是用 thread 來產生的日誌格式: adb logcat -v thread 需要注意的是你只能-v 選項來規定輸出格式 option. 查看 可用日誌緩沖區 Android日誌系統有循環緩沖區,並不是所有的日誌系統都有默認循環緩沖區。為了得到 日誌信息,你需要通過-b 選項來啟動logcat 。如果要使用循環緩沖區,你需要查看剩餘的 循環緩沖期: radio — 查看緩沖區的相關的信息. events — 查看和事件相關的的緩沖區. main — 查看主要的日誌緩沖區 -b 選項使用方法: [adb] logcat [-b <buffer>] 下面的例子表示怎麼查看日誌緩沖區包含radio 和 telephony信息: adb logcat -b radio 查看 stdout 和stderr 在默認狀態下,Android系統有stdout 和 stderr (System.out和System.err ) 輸出到/dev/null , 在運行Dalvik VM的進程中,有一個系統可以備份日誌文件。在這種情況下,系統會用stdout 和stderr 和 優先順序 I.來記錄日誌信息 通過這種方法指定輸出的路徑,停止運行的模擬器/設備,然後通過用setprop 命 令遠程輸入日誌 $ adb shell stop $ adb shell setprop log.redirect-stdio true $ adb shell start 系統直到你關閉模擬器/設備前設置會一直保留,可以通過添加/data/local.prop 可 以使用模擬器/設備上的默認設置 Logcat命令列表 Option Description -b <buffer> 載入一個可使用的日誌緩沖區供查看,比如event 和radio . 默認值是main 。具體查看Viewing Alternative Log Buffers. -c 清楚屏幕上的日誌. -d 輸出日誌到屏幕上. -f <filename> 指定輸出日誌信息的<filename> , 默認是stdout . -g 輸出指定的日誌緩沖區,輸出後退出. -n <count> 設置日誌的最大數目<count> ., 默認值是4,需要和 -r 選 項一起使用。 -r <kbytes> 每<kbytes> 時 輸出日誌,默認值為16,需要和-f 選 項一起使用. -s 設置默認的過濾級別為silent. -v <format> 設置日誌輸入格式,默認的是brief 格 式,要知道更多的支持的格式,參看Controlling Log Output Format .
『貳』 濡備綍灞忚斀android logcat涓鐨勬棤鐢ㄤ俊鎮
閲嶆柊鍒囨崲涓涓宸ヤ綔鍖洪棿銆
褰撲綘鍦ㄦ柊鍒囨崲鐨勫伐浣滃尯闂寸涓嬈$紪璇慳ndroid紼嬪簭鐨勬椂鍊欙紝浼氳╀綘閫夋嫨logcat杈撳嚭鐨勪俊鎮錛岃繖鏃跺欓夋嫨鎵鏈夛紙v寮澶寸殑閭d釜錛夈
涓鑸搴旂敤濡傛灉鏈夎緭鍑虹殑璇濆乏杈瑰氨浼氳嚜鍔ㄥ緩涓涓榪囨護鍣ㄣ
濡傛灉娌℃湁鐨勮瘽錛屽氨鎵嬪姩寤虹珛錛岀偣鍑誨乏杈圭殑鍔犲彿鐒跺悗娣誨姞榪囨護鍣ㄧ殑鍚嶇О浠ュ強闇瑕佽繃婊ょ殑搴旂敤鐨勫寘鍚嶏紝紜瀹氬嵆鍙銆
『叄』 如何在LogCat里過濾標簽
logcat -s Filter:I *:S在-s前加上-d可以只查看當前已有記錄後就關閉輸出流。
logcat是Android中一個命令行工具,可以用於得到程序的log信息。
adb logcat -s <tag>[:priority]
-s Set default filter to silent.
Like specifying filterspec '*:s'
where <tag> is a log component tag (or * for all) and priority is:
V Verbose
D Debug
I Info
W Warn
E Error
F Fatal
S Silent (supress all output)
'*' means '*:d' and <tag> by itself means <tag>:v
If not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.
If no filterspec is found, filter defaults to '*:I'
If not specified with -v, format is set from ANDROID_PRINTF_LOG
or defaults to "brief"
『肆』 濡備綍浠巐og涓鐪嬪埌鍐呭瓨娉勯湶闂棰樼偣
(涓) 鐢熸垚.hprof鏂囦歡
鐢熸垚.hprof 鏂囦歡鐨勬柟娉曟湁寰堝氾紝鑰屼笖Android 鐨勪笉鍚岀増鏈涓鐢熸垚.hprof 鐨勬柟寮忎篃紼嶆湁宸鍒錛屾垜浣跨敤鐨勭増鏈鐨勬槸2.1錛屽悇涓鐗堟湰涓鐢熸垚.prof 鏂囦歡鐨勬柟娉曡峰弬鑰冿細 http://android.git.kernel.org/?p=platform/dalvik.git;a=blob_plain;f=docs/heapprofiling.html;hb=HEAD銆
1. 鎵撳紑eclipse 騫跺垏鎹㈠埌DDMS 閫忚嗗浘錛屽悓鏃剁『璁Devices銆丠eap 鍜宭ogcat 瑙嗗浘宸茬粡鎵撳紑浜嗭紱
2. 灝嗘墜鏈鴻懼囬摼鎺ュ埌鐢佃剳錛屽苟紜淇濅嬌鐢ㄢ淯SB 璋冭瘯鈥濇ā寮忛摼鎺ワ紝鑰屼笉鏄鈥淢ass Storage鈥滄ā寮忥紱
3. 閾炬帴鎴愬姛鍚庡湪Devices 瑙嗗浘涓灝變細鐪嬪埌璁懼囩殑搴忓垪鍙鳳紝鍜岃懼囦腑姝e湪榪愯岀殑閮ㄥ垎榪涚▼錛
4. 鐐瑰嚮閫変腑鎯寵佸垎鏋愮殑搴旂敤鐨勮繘紼嬶紝鍦―evices 瑙嗗浘涓婃柟鐨勪竴琛屽浘鏍囨寜閽涓錛屽悓鏃墮変腑鈥淯pdate Heap鈥濆拰鈥淒ump HPROF file鈥濅袱涓鎸夐挳錛
5. 榪欐槸DDMS 宸ュ叿灝嗕細鑷鍔ㄧ敓鎴愬綋鍓嶉変腑榪涚▼鐨.hprof 鏂囦歡錛屽苟灝嗗叾榪涜岃漿鎹㈠悗瀛樻斁鍦╯dcard 褰撲腑錛屽傛灉浣犲凡緇忓畨瑁呬簡MAT 鎻掍歡錛岄偅涔堟ゆ椂MAT 灝嗕細鑷鍔ㄨ鍚鐢錛屽苟寮濮嬪.hprof 鏂囦歡榪涜屽垎鏋愶紱
娉ㄦ剰錛氱4 姝ュ拰絎5 姝ヨ兘澶熸e父浣跨敤鍓嶆彁鏄鎴戜滑闇瑕佹湁sdcard錛屽苟涓斿綋鍓嶈繘紼嬫湁鍚憇dcard涓鍐欏叆鐨勬潈闄(WRITE_EXTERNAL_STORAGE)錛屽惁鍒.hprof 鏂囦歡涓嶄細琚鐢熸垚錛
鍦╨ogcat 涓浼氭樉紺鴻稿 ERROR/dalvikvm(8574): hprof: can't open /sdcard/com.xxx.hprof-hptemp: Permission denied.鐨勪俊鎮銆
濡傛灉鎴戜滑娌℃湁sdcard錛屾垨鑰呭綋鍓嶈繘紼嬫病鏈夊悜sdcard 鍐欏叆鐨勬潈闄愶紙濡俿ystem_process錛夛紝 閭f垜浠鍙浠ヨ繖鏍峰仛錛
6. 鍦ㄥ綋鍓嶇▼搴忎腑錛屼緥濡俧ramework 涓鏌愪簺浠g爜涓錛屽彲浠ヤ嬌鐢╝ndroid.os.Debug 涓鐨勶細 public static void mpHprofData(String fileName) throws IOException 鏂規硶錛屾墜鍔ㄧ殑鎸囧畾.hprof 鏂囦歡鐨勭敓鎴愪綅緗銆
渚嬪傦細 xxxButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { android.os.Debug.mpHprofData("/data/temp/myapp.hprof"); ... ... } }
涓婅堪浠g爜鎰忓浘鏄甯屾湜鍦▁xxButton 琚鐐瑰嚮鐨勬椂鍊欏紑濮嬫姄鍙栧唴瀛樹嬌鐢ㄤ俊鎮錛屽苟淇濆瓨鍦ㄦ垜浠鎸囧畾鐨勪綅緗錛/data/temp/myapp.hprof錛岃繖鏍峰氨娌℃湁鏉冮檺鐨勯檺鍒朵簡錛岃屼笖涔熸棤欏葷敤sdcard銆
浣嗚佷繚璇/data/temp 鐩褰曟槸瀛樺湪鐨勩傝繖涓璺寰勫彲浠ヨ嚜宸卞畾涔夛紝褰撶劧涔熷彲浠ュ啓鎴恠dcard 褰撲腑鐨勬煇涓璺寰勩
(浜) 浣跨敤MAT瀵煎叆.hprof鏂囦歡
1. 濡傛灉鏄痚clipse 鑷鍔ㄧ敓鎴愮殑.hprof 鏂囦歡錛屽彲浠ヤ嬌鐢∕AT 鎻掍歡鐩存帴鎵撳紑錛堝彲鑳芥槸姣旇緝鏂扮殑ADT鎵嶆敮鎸侊級錛
2. 濡傛灉eclipse 鑷鍔ㄧ敓鎴愮殑.hprof 鏂囦歡涓嶈兘琚玀AT 鐩存帴鎵撳紑錛 鎴栬呮槸浣跨敤android.os.Debug.mpHprofData()鏂規硶鎵嬪姩鐢熸垚鐨.hprof 鏂囦歡錛屽垯闇瑕佸皢.hprof 鏂囦歡榪涜岃漿鎹錛岃漿鎹㈢殑鏂規硶錛 渚嬪傛垜灝.hprof 鏂囦歡鎷瘋礉鍒癙C 涓婄殑/ANDROID_SDK/tools 鐩褰曚笅錛屽苟杈撳叆鍛戒護hprofconv xxx.hprof yyy.hprof錛屽叾涓瓁xx.hprof 涓哄師濮嬫枃浠訛紝yyy.hprof 涓鴻漿鎹㈣繃鍚庣殑鏂囦歡銆傝漿鎹㈣繃鍚庣殑鏂囦歡鑷鍔ㄦ斁鍦/ANDROID_SDK/tools 鐩褰曚笅銆侽K錛屽埌姝や負姝錛.hprof 鏂囦歡澶勭悊瀹屾瘯錛屽彲浠ョ敤鏉ュ垎鏋愬唴瀛樻硠闇叉儏鍐典簡銆
3. 鍦‥clipse 涓鐐瑰嚮Windows->Open Perspective->Other->Memory Analyzer錛屾垨鑰呮墦Memory Analyzer Tool 鐨凴CP銆傚湪MAT 涓鐐瑰嚮File->Open File錛屾祻瑙堝苟瀵煎叆鍒氬垰杞鎹㈣屽緱鍒扮殑.hprof鏂囦歡銆
(涓) 浣跨敤MAT鐨勮嗗浘宸ュ叿鍒嗘瀽鍐呭瓨
瀵煎叆.hprof 鏂囦歡浠ュ悗錛孧AT 浼氳嚜鍔ㄨВ鏋愬苟鐢熸垚鎶ュ憡錛岀偣鍑籇ominator Tree錛屽苟鎸塒ackage鍒嗙粍錛岄夋嫨鑷宸辨墍瀹氫箟鐨凱ackage 綾葷偣鍙抽敭錛屽湪寮瑰嚭鑿滃崟涓閫夋嫨List objects->With incoming references銆傝繖鏃朵細鍒楀嚭鎵鏈夊彲鐤戠被錛屽彸閿鐐瑰嚮鏌愪竴欏癸紝騫墮夋嫨Path to GC Roots -> exclude weak/soft references錛屼細榪涗竴姝ョ瓫閫夊嚭璺熺▼搴忕浉鍏崇殑鎵鏈夋湁鍐呭瓨娉勯湶鐨勭被銆傛嵁姝わ紝鍙浠ヨ拷韙鍒頒唬鐮佷腑鐨勬煇涓涓浜х敓娉勯湶鐨勭被銆
MAT 鐨勭晫闈㈠備笅鍥炬墍紺恆
鍏蜂綋鐨勫垎鏋愭柟娉曞湪姝や笉鍋氳存槑浜嗭紝鍥犱負鍦∕AT 鐨勫畼鏂圭綉絝欏拰瀹㈡埛絝鐨勫府鍔╂枃妗d腑鏈夊嶮鍒嗚﹀敖鐨勪粙緇嶃 浜嗚ВMAT 涓鍚勪釜瑙嗗浘鐨勪綔鐢ㄥ緢閲嶈侊紝渚嬪www.eclipse.org/mat/about/screenshots.php 涓浠嬬粛鐨勩
鎬諱箣浣跨敤MAT 鍒嗘瀽鍐呭瓨鏌ユ壘鍐呭瓨娉勬紡鐨勬牴鏈鎬濊礬錛屽氨鏄鎵懼埌鍝涓綾葷殑瀵硅薄鐨勫紩鐢ㄦ病鏈夎閲婃斁錛屾壘鍒版病鏈夎閲婃斁鐨勫師鍥狅紝涔熷氨鍙浠ュ緢瀹規槗瀹氫綅浠g爜涓鐨勫摢浜涚墖孌電殑閫昏緫鏈夐棶棰樹簡銆
鍙﹀栧湪嫻嬭瘯榪囩▼棣栧厛闇瑕佸垎鏋愭庝箞鏍鋒搷浣滀竴涓搴旂敤浼氫駭鐢熷唴瀛樻硠闇茬劧鍚庡湪涓嶆柇鐨勬搷浣滀腑鎶撳彇璇ヨ繘紼嬩駭鐢熺殑hhprof鏂囦歡浣跨敤MAT宸ュ叿鍒嗘瀽銆傜洰鍓嶈嚜宸辯殑浜嗚В鏌ョ湅鍐呭瓨鍒嗘瀽鍐呭瓨娉勯湶榪樻湁浠ヤ笅鍑犵嶆柟娉曪細
1.浣跨敤top鍛戒護鏌ョ湅鏌愪釜榪涚▼鐨勫唴瀛樸備緥濡傚壋寤轟竴涓鑴氭湰鏂囦歡music.sh 璇ユ枃浠跺唴瀹逛負鎸囧畾紼嬪簭姣忛殧涓縐掗挓杈撳嚭鏌愪釜榪涚▼鐨勫唴瀛樹嬌鐢ㄦ儏鍐碉紝鍦ㄦゅ叿浣撳疄鐜板備笅 錛
#!/bin/bash
while true; do
adb shell procrank | grep "com.android.music"
sleep 1
done
騫朵笖閰嶅悎浣跨敤procank宸ュ叿鍙浠ユ煡鐪媘usic榪涚▼姣忎竴縐掗挓鍐呭瓨浣跨敤鎯呭喌銆
2.鍙﹀栦嬌鐢╰op鍛戒護涔熷彲鏄鏌ョ湅鍐呭瓨鍏蜂綋涓猴細
adb shell top -m 10.(鏌ョ湅浣跨敤璧勬簮鏈澶氱殑10涓榪涚▼)
adb shell top|grep com.android.music(鏌ョ湅music榪涚▼鐨勫唴瀛)
3.free鍛戒護
free
1.浣滅敤free鍛戒護鐢ㄦ潵鏄劇ず鍐呭瓨鐨勪嬌鐢ㄦ儏鍐碉紝浣跨敤鏉冮檺鏄鎵鏈夌敤鎴楓
2.鏍煎紡free [錛峛|錛峩|錛峬] [錛峯] [錛峴 delay] [錛峵] [錛峍]
3.涓昏佸弬鏁幫紞b 錛峩 錛峬錛氬垎鍒浠ュ瓧鑺傦紙KB銆丮B錛変負鍗曚綅鏄劇ず鍐呭瓨浣跨敤鎯呭喌銆
錛峴 delay錛氭樉紺烘瘡闅斿氬皯縐掓暟鏉ユ樉紺轟竴嬈″唴瀛樹嬌鐢ㄦ儏鍐點
錛峵錛氭樉紺哄唴瀛樻誨拰鍒椼
錛峯錛氫笉鏄劇ず緙撳啿鍖鴻皟鑺傚垪銆
4.搴旂敤瀹炰緥free鍛戒護鏄鐢ㄦ潵鏌ョ湅鍐呭瓨浣跨敤鎯呭喌鐨勪富瑕佸懡浠ゃ傚拰top鍛戒護鐩告瘮錛屽畠鐨勪紭鐐規槸浣跨敤綆鍗曪紝騫朵笖鍙鍗犵敤寰堝皯鐨勭郴緇熻祫婧愩傞氳繃錛峉鍙傛暟鍙浠ヤ嬌鐢╢ree鍛戒護涓嶉棿鏂鍦扮洃瑙嗘湁澶氬皯鍐呭瓨鍦ㄤ嬌鐢錛岃繖鏍峰彲浠ユ妸瀹冨綋浣滀竴涓鏂逛究瀹炴椂鐩戞帶鍣ㄣ
錛僨ree 錛峛 錛峴5浣跨敤榪欎釜鍛戒護鍚庣粓絝浼氳繛緇涓嶆柇鍦版姤鍛婂唴瀛樹嬌鐢ㄦ儏鍐碉紙浠ュ瓧鑺備負鍗曚綅錛夛紝姣5縐掓洿鏂頒竴嬈°