[PATCH] translations/zh_CN: add translations to dev-tools gcov
STALE2012d
From: Bernard Zhao <hidden>
Date: 2021-03-31 13:21:52
Also in:
lkml
Add translations to dev-tools gcov Signed-off-by: Bernard Zhao <redacted> --- .../translations/zh_CN/dev-tools/gcov.rst | 274 ++++++++++++++++++ 1 file changed, 274 insertions(+) create mode 100644 Documentation/translations/zh_CN/dev-tools/gcov.rst
diff --git a/Documentation/translations/zh_CN/dev-tools/gcov.rst b/Documentation/translations/zh_CN/dev-tools/gcov.rst
new file mode 100644
index 000000000000..5ebbc55e5881
--- /dev/null
+++ b/Documentation/translations/zh_CN/dev-tools/gcov.rst@@ -0,0 +1,274 @@ +Chinese translated version of Documentation/dev-tools/gcov.rst + +If you have any comment or update to the content, please contact the +original document maintainer directly. However, if you have a problem +communicating in English you can also ask the Chinese maintainer for +help. Contact the Chinese maintainer if this translation is outdated +or if there is a problem with the translation. + +Chinese maintainer: Bernard Zhao <bernard@vivo.com> +--------------------------------------------------------------------- +Documentation/dev-tools/gcov.rst çä¸æç¿»è¯ + +妿æ³è¯è®ºææ´æ°æ¬æçå
容ï¼è¯·ç´æ¥èç³»åææ¡£çç»´æ¤è ãå¦æä½ ä½¿ç¨è±æ +äº¤æµæå°é¾çè¯ï¼ä¹å¯ä»¥å䏿çç»´æ¤è æ±å©ã妿æ¬ç¿»è¯æ´æ°ä¸åæ¶æè ç¿» +è¯åå¨é®é¢ï¼è¯·èç³»ä¸æçç»´æ¤è ã + +䏿çç»´æ¤è ï¼ èµµåå¥ Bernard Zhao [off-list ref] +䏿çç¿»è¯è ï¼ èµµåå¥ Bernard Zhao [off-list ref] + +以ä¸ä¸ºæ£æ +--------------------------------------------------------------------- + +å¨Linuxå æ ¸é使ç¨gcovå代ç è¦ççæ£æ¥ +=============================== +gcovæ¯linuxä¸å·²ç»éæçä¸ä¸ªåææ¨¡åï¼è¯¥æ¨¡åå¨å æ ¸ä¸å¯¹GCCç代ç è¦ççç» +计æä¾äºæ¯æã +linuxå æ ¸è¿è¡æ¶ç代ç è¦ççæ°æ®ä¼ä»¥gcovå ¼å®¹çæ ¼å¼åå¨å¨debug-fsä¸ï¼å¯ +以éè¿å¦ä¸çæ¹å¼è·å¾æå®æä»¶ç代ç è¿è¡è¦ççç»è®¡æ°æ®ï¼éè¦è·³è½¬å°å æ ¸ +ç¼è¯è·¯å¾ä¸å¹¶ä¸è¦ærootæéï¼ï¼ + + # cd /tmp/linux-out + # gcov -o /sys/kernel/debug/gcov/tmp/linux-out/kernel spinlock.c + +è¿ä¸ªå½ä»¤ä¼å¨å½åç¼è¯è·¯å¾ä¸åå»ºå¸¦ææ³¨éç代ç å®é è¿è¡æ¬¡æ°çè®¡æ°æºæä»¶ã +å¨è·å¾è¿äºç»è®¡æä»¶åï¼å¯ä»¥ä½¿ç¨å¾å½¢åçgcovåç«¯å·¥å ·ï¼æ¯å¦lcovï¼ï¼ +æ¥å®ç°èªå¨åå¤çlinux kernelçè¦ççè¿è¡æ°æ®ï¼åæ¶çææäºé 读çHTMLæ ¼ +弿件ã + +å¯è½çç¨éï¼ + +* è°è¯ï¼ç¨æ¥å¤ææ¯ä¸è¡çä»£ç æ¯å¦å·²ç»è¿è¡è¿ï¼ +* æµè¯æ¹è¿ï¼å¦ä½ä¿®æ¹æµè¯ä»£ç ï¼å°½å¯è½å°è¦çå°æ²¡æè¿è¡è¿ç代ç ï¼ +* å æ ¸é ç½®ä¼åï¼å¯¹äºæä¸ä¸ªconfigé ç½®ï¼å¦æå ³èç代ç 仿¥æ²¡æè¿è¡è¿ï¼æ¯ +å¦è¿éè¦è¿ä¸ªé ç½®ï¼ + +gcovålcovçå ³èç½ç« +.. _gcov: https://gcc.gnu.org/onlinedocs/gcc/Gcov.html +.. _lcov: http://ltp.sourceforge.net/coverage/lcov.php + + +åå¤ +----------- + +æå¼å¦ä¸é ç½®ï¼ + + CONFIG_DEBUG_FS=y + CONFIG_GCOV_KERNEL=y + +è·åæ´ä¸ªå æ ¸çè¦ççæ°æ®ï¼è¿éè¦æå¼ï¼ + + CONFIG_GCOV_PROFILE_ALL=y + +éè¦æ³¨æçæ¯ï¼æ´ä¸ªkernelå¼å¯è¦ççç»è®¡åé ækerneléåæä»¶å°ºå¯¸çå¢å¤§ï¼ +åæ¶kernelè¿è¡çä¹ä¼åæ ¢ä¸äºã +å¦å¤ï¼å¹¶ä¸æ¯ææçæ¶æé½æ¯ææ´ä¸ªkernelå¼å¯è¦ççç»è®¡ã + +代ç è¿è¡è¦ççæ°æ®åªå¨debugfsæè½½å®æåæå¯ä»¥è®¿é®ï¼ + + mount -t debugfs none /sys/kernel/debug + + +客å¶å +------------- + +妿è¦åç¬é对æä¸ä¸ªè·¯å¾æè æä»¶è¿è¡ä»£ç è¦ççç»è®¡ï¼å¯ä»¥å¨kernelç¸åºè·¯ +å¾çMakefileä¸å¢å å¦ä¸çé ç½®ï¼ + +- åç¬ç»è®¡å个æä»¶ï¼ä¾å¦main.oï¼ + + GCOV_PROFILE_main.o := y + +- åç¬ç»è®¡æä¸ä¸ªè·¯å¾ + + GCOV_PROFILE := y + +妿è¦å¨æ´ä¸ªkernelçè¦ççç»è®¡ï¼å¼å¯CONFIG_GCOV_PROFILE_ALLï¼ä¸åç¬æé¤ +æä¸ä¸ªæä»¶æè è·¯å¾ï¼å¯ä»¥ä½¿ç¨å¦ä¸çæ¹æ³ï¼ + +- ä¸ç»è®¡å个æä»¶ï¼ä¾å¦main.oï¼ + + GCOV_PROFILE_main.o := n + +- ä¸ç»è®¡æä¸ä¸ªè·¯å¾ + + GCOV_PROFILE := n + + +å ³èçæä»¶ +------------- + +gcovåè½éè¦å¨debugfsä¸å建å¦ä¸æä»¶ + +``/sys/kernel/debug/gcov`` + gcovç¸å ³åè½çæ ¹è·¯å¾ + +``/sys/kernel/debug/gcov/reset`` + gcovå¤ä½ï¼å该æä»¶åå ¥æ°æ®åä¼å°ææçgcovç»è®¡æ°æ®æ¸ 0 + +``/sys/kernel/debug/gcov/path/to/compile/dir/file.gcda`` + gcovå·¥å ·å¯ä»¥è¯å«çè¦ççç»è®¡æ°æ®æä»¶ + +``/sys/kernel/debug/gcov/path/to/compile/dir/file.gcno`` + gcovå·¥å ·éè¦çè½¯è¿æ¥æä»¶ï¼æåç¼è¯æ¶çæçä¿¡æ¯ç»è®¡æä»¶ï¼ï¼è¿ä¸ªæä»¶æ¯ + å¨gccç¼è¯æ¶å¦æé ç½®äºé项-ftest-coverageæ¶çæçã + + +é对moduleçç»è®¡ +------- + +kernelä¸ç模åä¼å¨æçå è½½åå¸è½½ï¼æ¨¡åå¸è½½æ¶å¯¹åºçæ°æ®ä¼è¢«æ¸ 餿ã +gcovæä¾äºä¸ç§æºå¶ï¼éè¿ä¿çç¸å ³æ°æ®ç坿¬æ¥æ¶éè¿é¨åå¸è½½æ¨¡åçè¦ççæ°æ®ã +模åå¸è½½åè¿äºå¤ä»½æ°æ®å¨debugfsä¸ä¼ç»§ç»åå¨ã +䏿¦è¿ä¸ªæ¨¡åéæ°å è½½ï¼æ¨¡åå ³èçè¿è¡ç»è®¡ä¼è¢«åå§åædebugfsä¸å¤ä»½çæ°æ®ã + +å¯ä»¥éè¿å¯¹å æ ¸åæ°gcov_persistçä¿®æ¹æ¥åç¨gcov对moduleçå¤ä»½æºå¶ï¼ + + gcov_persist = 0 + +å¨è¿è¡æ¶ï¼ç¨æ·è¿å¯ä»¥éè¿åå ¥æ¨¡åçæ°æ®æä»¶æè åå ¥gcovå¤ä½æä»¶æ¥ä¸¢å¼å·²å¸ +载模åçæ°æ®ã + + +å离çç¼è¯åè¿è¡è®¾å¤ +--------------------------------- + +gcovçå æ ¸åææ¶ææ¯æå æ ¸çç¼è¯ååææ¯å¨åä¸å°è®¾å¤ä¸ï¼ä¹å¯ä»¥ç¼è¯åè¿ +è¡æ¯å¨ä¸åç设å¤ä¸ã +å¦æå æ ¸ç¼è¯åè¿è¡æ¯ä¸åç设å¤ï¼é£ä¹éè¦é¢å¤çåå¤å·¥ä½ï¼è¿åå³äºgcov tools +æ¯å¨åªé使ç¨çï¼ + +a) gcov妿è¿è¡å¨æµè¯è®¾å¤ä¸ + + æµè¯è®¾å¤ä¸é¢gcovå·¥å ·ççæ¬å¿ é¡»è¦è·è®¾å¤å æ ¸ç¼è¯ä½¿ç¨çgccçæ¬ç¸å ¼å®¹ï¼ + åæ¶ä¸é¢çæä»¶è¦ä»ç¼è¯è®¾å¤æ·è´å°æµè¯è®¾å¤ä¸ï¼ + + 仿ºä»£ç ä¸ï¼ + - ææçCæä»¶å头æä»¶ + + ä»ç¼è¯ç®å½ä¸ï¼ + - ææçCæä»¶å头æä»¶ + - ææç.gcdaæä»¶å.gcnoæä»¶ + - ææç®å½ç龿¥ + + éè¦æ³¨æçæ¯ï¼æµè¯æºå¨ä¸é¢çç®å½ç»æè·ç¼è¯æºå¨ä¸é¢çç®å½æºæå¿ é¡»å®å ¨ä¸è´ã + 妿æä»¶æ¯è½¯é¾æ¥ï¼éè¦æ¿æ¢æçæ£çç®å½æä»¶ï¼è¿æ¯ç±makeçå½åå·¥ä½ç®å½åé + CURDIRå¼èµ·çï¼ã + +b) gcov妿è¿è¡å¨ç¼è¯è®¾å¤ä¸ + + æµè¯ç¨ä¾è¿è¡ç»æåï¼å¦ä¸çæä»¶éè¦ä»æµè¯è®¾å¤ä¸æ·è´å°ç¼è¯è®¾å¤ä¸ï¼ + + ä»sysfsä¸çgcovç®å½ä¸ï¼ + - ææç.gcdaæä»¶ + - ææç.gcnoæä»¶è½¯é¾æ¥ + + è¿äºæä»¶å¯ä»¥æ·è´å°ç¼è¯è®¾å¤çä»»æç®å½ä¸ï¼gcov使ç¨-oé项æå®æ·è´çç®å½ã + + æ¯å¦ä¸ä¸ªæ¯ç¤ºä¾çç®å½ç»æå¦ä¸ï¼ + /tmp/linux: å æ ¸æºç ç®å½ + /tmp/out: å æ ¸ç¼è¯æä»¶è·¯å¾ï¼make O=æå®ï¼ + /tmp/coverage: 仿µè¯æºå¨ä¸é¢æ·è´çæ°æ®æä»¶è·¯å¾ + + [user@build] cd /tmp/out + [user@build] gcov -o /tmp/coverage/tmp/out/init main.c + + +å ³äºç¼è¯å¨ç注æäºé¡¹ +----------------- + +GCCåLLVM gcovå·¥å ·ä¸ä¸å®å ¼å®¹ã +妿ç¼è¯å¨æ¯GCCï¼ä½¿ç¨gcov_æ¥å¤ç.gcnoå.gcdaæä»¶ï¼å¦ææ¯Clangç¼è¯å¨ï¼ +å使ç¨llvm-cov_ã + +gcc gcovållvm covçå ³èç½ç« +.. _gcov: https://gcc.gnu.org/onlinedocs/gcc/Gcov.html +.. _llvm-cov: https://llvm.org/docs/CommandGuide/llvm-cov.html + +GCCåClang gcovä¹é´ççæ¬å·®å¼ç±Kconfigå¤ççã +kconfig伿 ¹æ®ç¼è¯å·¥å ·é¾çæ£æ¥èªå¨éæ©åéçgcovæ ¼å¼ã + +é®é¢å®ä½ +--------------- + +å¯è½åºç°çé®é¢1 + ç¼è¯å°é¾æ¥é¶æ®µæ¥éç»æ¢ + +é®é¢åå + åææ å¿æå®å¨äºæºæä»¶ä½æ¯æ²¡æé¾æ¥å°ä¸»å æ ¸ï¼æè 客å¶åäºé¾æ¥ç¨åº + +è§£å³æ¹æ³ + éè¿å¨Makefileä¸ä½¿ç¨GCOV_PROFILE := næè + GCOV_PROFILE_basename.o := næ¥å°é¾æ¥æ¥éçæä»¶æé¤æ + +å¯è½åºç°çé®é¢2 + æä»¶ä»sysfsæ·è´æ¶ä¸å卿è ä¸å¯è®¿é® + +é®é¢åå + ç±äºseq_fileç工使¹å¼ï¼æäºå·¥å ·ï¼ä¾å¦cpætarï¼å¯è½æ æ³æ£ç¡®å°ä» + sysfså¤å¶æä»¶ã + +è§£å³æ¹æ³ + 使ç¨cat读å.gcdaæä»¶ï¼ä½¿ç¨cp -då¤å¶é¾æ¥ï¼æè 使ç¨éå½Bä¸æç¤ºç + æºå¶ã + + +éå½Aï¼collect_on_build.sh +------------------------------ + +ç¨äºå¨ç¼è¯è®¾å¤ä¸æ¶éè¦ççç¼è¯ä¸é´æ°æ®æä»¶ç示ä¾èæ¬ + +.. code-block:: sh + + #!/bin/bash + + KSRC=$1 + KOBJ=$2 + DEST=$3 + + if [ -z "$KSRC" ] || [ -z "$KOBJ" ] || [ -z "$DEST" ]; then + echo "Usage: $0 <ksrc directory> <kobj directory> <output.tar.gz>" >&2 + exit 1 + fi + + KSRC=$(cd $KSRC; printf "all:\n\t@echo \${CURDIR}\n" | make -f -) + KOBJ=$(cd $KOBJ; printf "all:\n\t@echo \${CURDIR}\n" | make -f -) + + find $KSRC $KOBJ \( -name '*.gcno' -o -name '*.[ch]' -o -type l \) -a \ + -perm /u+r,g+r | tar cfz $DEST -P -T - + + if [ $? -eq 0 ] ; then + echo "$DEST successfully created, copy to test system and unpack with:" + echo " tar xfz $DEST -P" + else + echo "Could not create file $DEST" + fi + + +éå½Bï¼collect_on_test.sh +----------------------------- + +ç¨äºå¨æµè¯è®¾å¤ä¸æ¶éè¦çéç»è®¡æ°æ®æ°æ®æä»¶ç示ä¾èæ¬ + +.. code-block:: sh + + #!/bin/bash -e + + DEST=$1 + GCDA=/sys/kernel/debug/gcov + + if [ -z "$DEST" ] ; then + echo "Usage: $0 <output.tar.gz>" >&2 + exit 1 + fi + + TEMPDIR=$(mktemp -d) + echo Collecting data.. + find $GCDA -type d -exec mkdir -p $TEMPDIR/\{\} \; + find $GCDA -name '*.gcda' -exec sh -c 'cat < $0 > '$TEMPDIR'/$0' {} \; + find $GCDA -name '*.gcno' -exec sh -c 'cp -d $0 '$TEMPDIR'/$0' {} \; + tar czf $DEST -C $TEMPDIR sys + rm -rf $TEMPDIR + + echo "$DEST successfully created, copy to build system and unpack with:" + echo " tar xfz $DEST" -- 2.31.0