2020/2/20-21で開催されるはずだったDroidKaigi 2020で登壇するはずだったAndroidのデバッグ手法について紹介するスライドです。3月中にセッション録画を行い、DroidKaigi公式YouTubeチャンネルにて公開していただく予定です。
ַ㨣"OESPJE،فٔرغحؚ،فٔך⹛⡲鷄ְַֽ״ֲ:PTIJIJSP8BEB!FEPLVQ%SPJE,BJHJ!
View Slide
:PTIJIJSP8BEB!FEPLVQ$ZCFS"HFOU *OD"NFCB1IPUPHSBQIZ.PUPSTQPSU(BEHFU
劤إحءّٝך؞٦ٕ
˖ "OESPJE،فٔ涪חֶֽرغحؚ䩛岀⡤禸涸ח濼˖ "OESPJE4UVEJPךرغحؚ堣腉˖ ワ鴟خ٦ٕ欽ְرغحؚ䩛岀劤إحءّٝך؞٦ٕ!4"OESPJE،فٔךչזպ瑱ֹ姺ֿה⸬桦⻉ׅ
،آؑٝت
˖ "OESPJE،فٔחֶֽرغحؚ˖ "OESPJE4UVEJPךرغحؚ堣腉欽ְرغحؚ˖ ワ鴟خ٦ٕ٥ٓ؎ـٓٔ欽ְرغحؚ˖ رغحؚ䩛岀ך䲿周˖ תה،آؑٝت!6
"OESPJE،فٔ涪חֶֽرغحؚ
ת׆ծرغحؚהכ!8رغحؚEFCVHהכծ؝ٝؾُ٦ةفؚٗٓيװꨵ孡堣㐻⚥ךغؚ٥妀ꤒ涪鋅ֶ״ן⥜姻׃ծ⹛⡲➬圫鸐ךךהׅך⡲噟ד֮կˋ8JLJQFEJB״
˖ "OESPJEדرغحؚׅꥷך㼎韋˖ 6*˖ ٗآحؙ˖ "1*鸐⥋٥畭劣ⰻ%#乼⡲˖ ˘銲כ葿ղկ"OESPJE،فٔ涪חֶֽرغحؚ!9
رغحؚ堣腉ך稱➜
"OESPJE4UVEJPךرغحؚ堣腉
˖ "OESPJE4UVEJP儗挿דךرغحؚ堣腉⚥䗰ח稱➜˖ -PHDBU˖ #SFBLQPJOU˖ -BZPVU*OTQFDUPS˖ "OESPJE1SPMFS"OESPJE4UVEJPךرغحؚ堣腉!12
-PHDBU#SFBLQPJOU -BZPVU*OTQFDUPS "OESPJE1SPMFS-PHDBU
˖ "OESPJE畭劣ַ⳿⸂ׁؚٗꠘ鋮דֹ˖ ְײչQSJOUGرغحؚպח⢪ֲ˖ אךؚٖٗكָٕ֮կ♴ח遤ֻקו⮚⯓䏝ך넝ְٖكٕ˖ 7&3#04&˖ %(˖ */'0˖ 8"3/˖ &3303˖ "44&35-PHDBU!14
-PHDBUך⳿⸂!15
-PHDBUך⳿⸂!16
䭷㹀׃ؚٖٗكٕ״⮚⯓䏝ך넝ְؚٗך⳿⸂ֿׅהָדֹ
-PHDBUד⳿⸂ׁؚٗך铣倯!192020-01-21 18:59:20.426 14374-14374/dev.dokup.testbed D/LogcatPresenter: Debug log output出力時刻PIDTIDパッケージ名ログレベルタグメッセージ
#SFBLQPJOU-PHDBU -BZPVU*OTQFDUPS "OESPJE1SPMFS#SFBLQPJOU
˖ 䭷㹀׃遤דⳢ椚♧儗⨡姺ـٖ٦ׇׁؙ˖ ך澓ך㢌侧瘝ך朐䡾然钠דֹ˖ رغحؖ٦饯⹛׃ג،فٔח،ةحثֿׅהד⢪欽דֹ#SFBLQPJOU!21
ؽٕس׃ג㹋遤׃،فٔחرغحؖ٦،ةحث%FCVHNPEVMF
㹋遤⚥ך،فٔחرغحؖ٦،ةحثׅ"UUBDI%FCVHHFSUP"OESPJE1SPDFTT
،فٔחرغحؖ٦،ةحثדֹ״ֲחׅ!24BQQCVJMEHSBEMFandroid {buildTypes {debug {debuggable true}}}
،فٔחرغحؖ٦،ةحثדֹ״ֲחׅ!25BQQCVJMEHSBEMFandroid {buildTypes {debug {debuggable true}}}debuggable trueCVJME5ZQFTח鷄⸇ׅ
˖ ㄏ⟀#SFBLQPJOU˖ 㢌侧#SFBLQPJOU#SFBLQPJOUך珏겲!26
˖ Ⳣ椚ח㼎׃ג䭷㹀ׅ#SFBLQPJOU˖ ךⳢ椚ָ㹋遤ׁ湫דـٖ٦ؙׅ#SFBLQPJOUך珏겲ㄏ⟀#SFBLQPJOU!27
˖ 㢌侧ח㼎׃ג䭷㹀ׅ#SFBLQPJOU˖ ך㢌侧ָ乼⡲ׁ儗ծـٖ٦ؙׅ#SFBLQPJOUך珏겲㢌侧#SFBLQPJOU!28
˖ 〸ؙٔحؙדֻغٕ٦ַٝـٖ٦ؙׅ㢌侧פך乼⡲䭷㹀〳腉#SFBLQPJOUך珏겲㢌侧#SFBLQPJOU!29ⴱ劍⻉ծ撑ծ箟꧊ַ䭷㹀דֹ
ـٖ٦ؙ儗ךرغحؖ٦ך邌爙!30
ـٖ٦ؙ儗ךرغحؖ٦ך邌爙!31ـٖ٦ؙ儗ךأٖحسך朐䡾
ـٖ٦ؙ儗ךرغحؖ٦ך邌爙!32
ـٖ٦ؙ儗ךرغحؖ٦ך邌爙!33ـٖ٦ؙ儗ך㢌侧ך朐䡾
#SFBLQPJOU♧鋮歗!34
#SFBLQPJOU♧鋮歗!35鏣㹀׃#SFBLQPJOUך♧鋮
#SFBLQPJOU♧鋮歗!36#SFBLQPJOUך箟꧊歗
˖ ـٖ٦ؙ儗挿ד䒭㹋遤׃גך穠卓然钠ֿׅהָדֹ&WBMVBUJPO!37
&WBMVBUJPOד㹋ꥷח䒭㹋遤׃圫㶨!38
&WBMVBUJPO!39UJQT㹋遤ׅ䒭ח״גⶰ⡲欽饯ֿֿׅהדֹ
-BZPVU*OTQFDUPS-PHDBU #SFBLQPJOU "OESPJE1SPMFS-BZPVU*OTQFDUPS
˖ 㹋ꥷח㹋遤ׁגְ歗ַأؙٔ٦ٝءّحز《䖤׃ծٖ؎،ؐز朐䡾嗚鏾ׅ-BZPVU*OTQFDUPS!41
-BZPVU*OTQFDUPSך鋅倯!42
-BZPVU*OTQFDUPSך鋅倯!43邌爙ׁגְ7JFXךꥡ㾴䞔㜠
-BZPVU*OTQFDUPSך鋅倯!44أؙٔ٦ٝءّحزٖ؎،ؐز㞮歲אֹ
-BZPVU*OTQFDUPSך鋅倯!45鼅䫛׃7JFXךػًٓ٦ة♧鋮
˖ "OESPJE4UVEJPַⵃ欽〳腉˖ "1*⟃♳ַא鏣㹀דך剣⸬⻉ָ䗳銲˖ ،فٔך乼⡲ח㼎䘔׃גت؎شىحؙח刿倜ׁ-BZPVU*OTQFDUPS˖ ⟃כ歗剑倜חⴖ剏ִꥷծⱄ䏝铣鴥׃ַזַ-JWF-BZPVU*OTQFDUPS!46
˖ ؽُ٦ꥡ㾴%⻉׃朐䡾ד䖓ꟼ⤘然钠דֹ״ֲח˖ וך7JFXָ邌爙♳דכ♳⩎חְךַծⴻⴽ׃װֻׅז%7JFX!48
㢳倯ぢַ鋅״ֲחկ7JFXך䖓ꟼ⤘ָ鋔鋙涸ח䪾䳢׃װְׅ
"OESPJE1SPMFS-PHDBU #SFBLQPJOU -BZPVU*OTQFDUPS "OESPJE1SPMFS
˖ $16ًٌٔطحزٙ٦ؙغحذٔ٦ך⢪欽朐屣䪾䳢דֹ"OESPJE1SPMFS!52
˖ $16ًٌٔطحزٙ٦ؙغحذٔ٦ך⢪欽朐屣䪾䳢דֹ"OESPJE1SPMFS!53ؗ٦Ⰵ⸂瘝ך؎كٝزָ邌爙ׁ
$161SPMFS
˖ $16ך⢪欽桦װוךأٖحسָ$16⢪גְַ然钠דֹ$161SPMFS!55
眔㔲䭷㹀ד״鑫稢ז$16ך㼔剣嗚鏾ֿׅהָדֹ
.FNPSZ1SPMFS
˖ ،فָٔוֽךًٌٔ㼔剣׃גְַ然钠ֿׅהָדֹ.FNPSZ1SPMFS!59
˖ ،فָٔוֽךًٌٔ㼔剣׃גְַ然钠ֿׅהָדֹ.FNPSZ1SPMFS!60
鼅䫛眔㔲דָًٌٔⶴ䔲גגְؙٓأ♧鋮
˖ ،فָٔוֽךًٌٔ㼔剣׃גְַ然钠ֿׅהָדֹ.FNPSZ1SPMFS!62
㹋ꥷחⶴ䔲גגְ鼅䫛ؙٓأך؎ٝأةٝأך♧鋮
/FUXPSL1SPMFS
˖ طحزٙ٦ؙ鸐⥋嗚濼׃ծ鷏「⥋ׁر٦ة瘝ך然钠ָדֹ/FUXPSL1SPMFS!65
˖ طحزٙ٦ؙ鸐⥋嗚濼׃ծ鷏「⥋ׁر٦ة瘝ך然钠ָדֹ/FUXPSL1SPMFS!66
涪欰׃鸐⥋הךꆀָؚٓؿדַ
˖ طحزٙ٦ؙ鸐⥋嗚濼׃ծ鷏「⥋ׁر٦ة瘝ך然钠ָדֹ/FUXPSL1SPMFS!68
鼅䫛׃儗ח涪欰׃鸐⥋ָ邌爙ׁ
&OFSHZ1SPMFS
˖ $168J'J(16إٝ؟٦瘝ח״ؒطؘٕ٦嶊顤邌爙ׅ˖ "OESPJE⟃꣬דⵃ欽〳腉&OFSHZ1SPMFS!71
˖ $168J'J(16إٝ؟٦瘝ח״ؒطؘٕ٦嶊顤邌爙ׅ˖ "OESPJE⟃꣬דⵃ欽〳腉&OFSHZ1SPMFS!72
،فٔח״ؒطؘٕ٦嶊顤ꆀך㢌⻉ָ邌爙ׁגְ
˖ ؒطؘٕ٦嶊顤ח䕦갟ׅءأذي؎كٝز涪鋅דֹ&OFSHZ1SPMFSءأذي؎كٝزך邌爙!748BLFMPDL "MBSN+PC ⡘縧䞔㜠ؙٔؒأزأٔ٦ف朐䡾חז׆ח歗$160/׃竲ֽ㹀劍涸ח㹋遤ׁغحؙؚٓٝسةأؙ䭷㹀勴⟝ד㹋遤ׁغحؙؚٓؐٝسةأؙ(14إٝ؟٦瘝欽ְ⡘縧䞔㜠ך庠㹀ؙٔؒأز
ワ鴟خ٦ٕ٥ٓ؎ـٓٔח״رغحؚ
˖ 5JNCFS˖ 4UFUIP˖ 'MJQQFS˖ -FBL$BOBSZ˖ )ZQFSJPO"OESPJEワ鴟خ٦ٕ٥ٓ؎ـٓٔ!76
5JNCFS5JNCFS 4UFUIP 'MJQQFS -FBL$BOBSZ )ZQFSJPO
˖ 5JNCFS˖ 4UFUIP˖ 'MJQQFS˖ -FBL$BOBSZ˖ )ZQFSJPO"OESPJEワ鴟خ٦ٕ٥ٓ؎ـٓٔ!78
˖ android.util.Logחِ٦ذ؍ٔذ؍ׇծ㼭ֻׁծ䭁䓸䚍ׇٗؖ٦5JNCFS!79IUUQTHJUIVCDPN+BLF8IBSUPOUJNCFS
5JNCFSדؚٗ⳿ׅ➬穈!805SFF5JNCFS[email protected]"[email protected]#[email protected]$5JNCFSח״ؚٗך䮙⹛㹀纏ؙׅٓأ
5JNCFSדؚٗ⳿ׅ➬穈!815SFF5JNCFS[email protected]"[email protected]#[email protected]$5JNCFSQMBOU ًاحسד5JNCFSח鷄⸇
5JNCFSדؚٗ⳿ׅ➬穈!825SFF5JNCFS[email protected]"[email protected]#[email protected]$5JNCFSדؚٗ㹋遤ׅהծ鷄⸇׃5SFFח䖞גؚٗךⳢ椚㹋遤ׅ
4UFUIP5JNCFS 4UFUIP 'MJQQFS -FBL$BOBSZ )ZQFSJPO
˖ 'BDFCPPLָ涪׃$ISPNF%FW5PPMT♳ד圫ղז،فٔך朐䡾嗚鏾דֹخ٦ٕ˖ DISPNFJOTQFDUEFWJDFTַ،ؙإأדֹ4UFUIP!84IUUQTGBDFCPPLHJUIVCJPTUFUIP
'MJQQFS5JNCFS 4UFUIP 'MJQQFS -FBL$BOBSZ )ZQFSJPO
˖ 'BDFCPPLָ涪׃㼔欽،فٔ♳ד圫ղז،فٔך朐䡾嗚鏾דֹخ٦ٕկ"OESPJEJ04⚕㼎䘔˖ فؚٓ؎ٝ鷄⸇ֿׅהד圫ղזرغحؚ堣腉鷄⸇〳腉'MJQQFS!86IUUQTGCJQQFSDPN
'MJQQFS!87UJQT2'MJQQFSכ4UFUIPך縧ֹ䳔ִ4UFUIPכ穄"4UFUIP䒷ֹ竲ֹ植䕵կ'MJQQFSכ4UFUIPד⳿勻ֿהקהוؕغ٦׃גְָծ⹛⡲橆㞮זוծص٦ؤחさׇגخ٦ٕ鼅䫛׃״ֲ
-FBL$BOBSZ5JNCFS 4UFUIP 'MJQQFS -FBL$BOBSZ )ZQFSJPO
˖ 4RVBSFָ涪׃ًٌٔٔ٦ؙ嗚⳿خ٦ٕ˖ 㼪Ⰵ׃،فٔךًٌٔٔ٦ؙ嗚⳿׃ծ鸐濼ׅ-FBL$BOBSZ!89IUUQTTRVBSFHJUIVCJPMFBLDBOBSZ
ًٌٔٔ٦ؙ׃撑؝٦س♳ךせ獥ד邌爙׃גֻ
)ZQFSJPO"OESPJE5JNCFS 4UFUIP 'MJQQFS -FBL$BOBSZ )ZQFSJPO
˖ ،فٔ♳חرغحًؚصُ٦鷄⸇דֹٓ؎ـٓٔ˖ فؚٓ؎ٝ鷄⸇ֿׅהד堣腉鷄⸇ֿׅהָ⳿勻)ZQFSJPO"OESPJE!95IUUQTHJUIVCDPNXJMMPXUSFFBQQT)ZQFSJPO"OESPJE
畭劣䮶ַծ鸐濼걄㚖ַㄎן⳿ׇ
˖ IZQFSJPONFBTVSFNFOU˖ IZQFSJPODSBTI˖ IZQFSJPOSFDPSEFS˖ IZQFSJPOBUUS˖ IZQFSJPOEJTL˖ FUD)ZQFSJPO"OESPJEךرؿٕؓزٓ؎ـٓٔ!98
˖ IZQFSJPONFBTVSFNFOU˖ IZQFSJPODSBTI˖ IZQFSJPOSFDPSEFS˖ IZQFSJPOBUUS˖ IZQFSJPOEJTL˖ FUD)ZQFSJPO"OESPJEךرؿٕؓزٓ؎ـٓٔ!99
˖ 㹋堣♳דٖ؎،ؐزך朐䡾然钠דֹ˖ ぐ7JFXךو٦آٝծ7JFXך؟؎ؤָ然钠דֹIZQFSJPONFBTVSFNFOU!100
˖ ؙٓحءُ饯ֿ׃ꥷחؙٓحءُؚٗ畭劣♳ח邌爙ׅIZQFSJPODSBTI!101
ׇ֮גְֹֹHow to develop debugging libraries /デバッグライブラリを使うから作るへDay1 15:00-15:40 @Dialogsby Ryo Yamazaki
ِ٦أ؛٦أחׇ֮رغحؚ䩛岀ך䲿周
˖ ⟃♴ךِ٦أ؛٦أ⢽חծוֲرغحؚ׃גְַֻ铡僇˖ ؚٗך《䖤˖ "1*鸐⥋ך嗚鏾˖ 畭劣%#ך嗚鏾˖ 歗ٖ؎،ؐز˖ ⤑ⵃז#SFBLQPJOUِ٦أ؛٦أחׇ֮رغحؚ䩛岀ך䲿周!104
،فַؚٔٗ《䖤׃ְ
ؚٗך《䖤ؚٗך《䖤 "1*鸐⥋ 畭劣%# 歗ٖ؎،ؐز #SFBLQPJOU
˖ -PHDBUאֲַ˖ BOESPJEVUJM-PH˖ 5JNCFS˖ #SFBLQPJOUאֲַ˖ &WBMVBUFBOE-PH،فַؚٔٗ《䖤ׅ!107
˖ -PHDBUאֲַ˖ BOESPJEVUJM-PH˖ 5JNCFS˖ #SFBLQPJOUאֲַ˖ &WBMVBUFBOE-PH،فַؚٔٗ《䖤ׅ!108
BOESPJEVUJM-PHד-PHDBUח⳿⸂ׅ!109BOESPJEVUJM-PHדךؚٗ⳿⸂Log.v("TAG", "Verbose log output")Log.d("TAG", "Debug log output")Log.i("TAG", "Info log output")Log.w("TAG", "Warn log output")Log.e("TAG", "Error log output")
BOESPJEVUJM-PHד-PHDBUח⳿⸂ׅ!1105JNCFSדךؚٗ⳿⸂Timber.v("Verbose timber output")Timber.d("Debug timber output")Timber.i("Info timber output")Timber.w("Warn timber output")Timber.e("Error timber output")Timber.tag("TAG").d("Debug timber output")
BOESPJEVUJM-PHד-PHDBUח⳿⸂ׅ!1115JNCFSדךؚٗ⳿⸂Timber.v("Verbose timber output")Timber.d("Debug timber output")Timber.i("Info timber output")Timber.w("Warn timber output")Timber.e("Error timber output")Timber.tag("TAG").d("Debug timber output")5"(כ㹋遤ؙٓأせחז
BOESPJEVUJM-PHד-PHDBUח⳿⸂ׅ!1125JNCFSדךؚٗ⳿⸂Timber.v("Verbose timber output")Timber.d("Debug timber output")Timber.i("Info timber output")Timber.w("Warn timber output")Timber.e("Error timber output")Timber.tag("TAG").d("Debug timber output")5"(䭷㹀ֿׅהדֹ
BOESPJEVUJMMPHWT5JNCFS!113BOESPJEVUJMMPH 5JNCFS5"(ך䭷㹀 䗳銲 䗳銲搀ְ鏣㹀〳ٔٔ٦أדך㼎䘔 QSPHVBSE瘝ד嶊ׅ 5SFF䊴׃剏ִؚٗךꥷך䮙⹛ך㢌刿♶〳腉 〳腉ؕأةي5SFF
BOESPJEVUJMMPHWT5JNCFS!114BOESPJEVUJMMPH 5JNCFS5"(ך䭷㹀 䗳銲 䗳銲搀ְ鏣㹀〳ٔٔ٦أדך㼎䘔 QSPHVBSE瘝ד嶊ׅ 5SFF䊴׃剏ִؚٗךꥷך䮙⹛ך㢌刿♶〳腉 〳腉ؕأةي5SFFػؿؓ٦وٝأ⡚♴װ䞔㜠怩ְִך⽬ꤹ㔐鼘ׅ湡涸
BOESPJEVUJMMPHWT5JNCFS!115BOESPJEVUJMMPH 5JNCFS5"(ך䭷㹀 䗳銲 䗳銲搀ְ鏣㹀〳ٔٔ٦أדך㼎䘔 QSPHVBSE瘝ד嶊ׅ 5SFF䊴׃剏ִؚٗךꥷך䮙⹛ך㢌刿♶〳腉 〳腉ؕأةي5SFF
ؕأةي5SFFדؚٗךꥷך䮙⹛㢌ִ!116class CrashReportingTree : Timber.Tree() {override fun log(priority: Int,tag: String?,message: String,t: Throwable?) {if (priority == Log.VERBOSE || priority == Log.DEBUG) {return}// Do crash reporting...}}ؙٓحءُٖه٦ز遤ֲ5SFF
ؕأةي5SFFדؚٗךꥷך䮙⹛㢌ִ!117class CrashReportingTree : Timber.Tree() {override fun log(priority: Int,tag: String?,message: String,t: Throwable?) {if (priority == Log.VERBOSE || priority == Log.DEBUG) {return}// Do crash reporting...}}ؙٓحءُٖه٦ز遤ֲ5SFF5SFFؙٓأ竰䪫׃ؙٓأ⡲
ؕأةي5SFFדؚٗךꥷך䮙⹛㢌ִ!118class CrashReportingTree : Timber.Tree() {override fun log(priority: Int,tag: String?,message: String,t: Throwable?) {if (priority == Log.VERBOSE || priority == Log.DEBUG) {return}// Do crash reporting...}}ؙٓحءُٖه٦ز遤ֲ5SFFMPHًاحسךؔ٦غ٦ٓ؎سד䮙⹛㹀纏
ؕأةي5SFFדؚٗךꥷך䮙⹛㢌ִ!119override fun onCreate() {super.onCreate()if (BuildConfig.DEBUG) {Timber.plant(Timber.DebugTree())} else {Timber.plant(CrashReportingTree())}}"QQMJDBUJPOPO$SFBUF
ؕأةي5SFFדؚٗךꥷך䮙⹛㢌ִ!120override fun onCreate() {super.onCreate()if (BuildConfig.DEBUG) {Timber.plant(Timber.DebugTree())} else {Timber.plant(CrashReportingTree())}}"QQMJDBUJPOPO$SFBUF#VJME$POHד㙵鴥5SFF㢌ִ
˖ -PHDBUאֲַ˖ BOESPJEVUJM-PH˖ 5JNCFS˖ #SFBLQPJOUאֲַ˖ &WBMVBUFBOE-PH،فַؚٔٗ《䖤ׅ!121
˖ #SFBLQPJOUⵋ麦儗ח鎸鶢ׁⳢ椚㹋遤ׅ堣腉#SFBLQPJOUד&WBMVBUFBOE-PH遤ֲ!122
˖ #SFBLQPJOUⵋ麦儗ח鎸鶢ׁⳢ椚㹋遤ׅ堣腉#SFBLQPJOUד&WBMVBUFBOE-PH遤ֲ!1234USJOHָֿֿחⰅהծ$POTPMFةـח⳿⸂ׁ
#SFBLQPJOUד&WBMVBUFBOE-PH遤ֲ!124Breakpointの設定箇所Evaluate and Logの設定内容
#SFBLQPJOUד&WBMVBUFBOE-PH遤ֲ!125Breakpointの設定箇所Evaluate and Logの設定内容DebuggerのConsoleタブの出力
#SFBLQPJOUד&WBMVBUFBOE-PH遤ֲ!126Breakpointの設定箇所Evaluate and Logの設定内容DebuggerのConsoleタブの出力,PUMJOך䒭Ⰵ俑㶵ٔذָٕٓ⳿⸂ׁ
-PHDBUה&WBMVBUFBOE-PHך麩ְ!127-PHDBU &WBMVBUFBOE-PHؚٗ鷄⸇儗ךⱄؽٕس䗳銲 䗳銲搀ְؚٗ⳿ׅח䗳銲ז橆㞮"%# رغحؖ٦ך،ةحثؘؚٗٝه؎ٝز ؝٦س♳ח婍 ؝٦س♳ח婍זְ
-PHDBUה&WBMVBUFBOE-PHך麩ְ!128-PHDBU &WBMVBUFBOE-PHؚٗ鷄⸇儗ךⱄؽٕس䗳銲 䗳銲搀ְؚٗ⳿ׅח䗳銲ז橆㞮"%# رغحؖ٦ך،ةحثؘؚٗٝه؎ٝز ؝٦س♳ח婍 ؝٦س♳ח婍זְ"1*ؒٓ٦ךؚٗ瘝ծ䌢ח邌爙׃ְהֹח⢪ֲךָ葺ֲׁ
-PHDBUה&WBMVBUFBOE-PHך麩ְ!129-PHDBU &WBMVBUFBOE-PHؚٗ鷄⸇儗ךⱄؽٕس䗳銲 䗳銲搀ְؚٗ⳿ׅח䗳銲ז橆㞮"%# رغحؖ٦ך،ةحثؘؚٗٝه؎ٝز ؝٦س♳ח婍 ؝٦س♳ח婍זְ然钠瘝ծ♧儗涸חؚٗ⳿׃ְ㜥さח⢪ֲךָ葺ֲׁ
"1*鸐⥋ך嗚鏾ؚٗך《䖤 "1*鸐⥋ 畭劣%# 歗ٖ؎،ؐز #SFBLQPJOU
˖ "OESPJE1SPMFS⢪ֲ˖ /FUXPSL1SPMFS˖ ٓ؎ـٓٔ٥ワ鴟خ٦ٕ⢪ֲ˖ 4UFUIP/FUXPSL*OTQFDUPS˖ 'MJQQFS/FUXPSL1MVHJO"1*鸐⥋ךⰻ㺁嗚鏾ׅ!131
˖ "OESPJE1SPMFS⢪ֲ˖ /FUXPSL1SPMFS˖ ٓ؎ـٓٔ٥ワ鴟خ٦ٕ⢪ֲ˖ 4UFUIP/FUXPSL*OTQFDUPS˖ 'MJQQFS/FUXPSL1MVHJO"1*鸐⥋ךⰻ㺁嗚鏾ׅ!132
˖ طحزٙ٦ؙ鸐⥋嗚濼׃ծ鷏「⥋ׁر٦ة瘝ך然钠ָדֹ/FUXPSL1SPMFSⱄ䲓!133
˖ ⦐ղךؙٔؒأزؙٔحؙׅהך鑫稢ָ然钠דֹ/FUXPSL1SPMFSד⦐ղך鸐⥋然钠ׅ!135
˖ ⦐ղךؙٔؒأزؙٔحؙׅהך鑫稢ָ然钠דֹ/FUXPSL1SPMFSד⦐ղך鸐⥋然钠ׅ!136歗⫷ךؙٔؒأزדכ歗⫷ךفٖؽُ٦ָ邌爙ׁ
˖ "OESPJE1SPMFS⢪ֲ˖ /FUXPSL1SPMFS˖ ٓ؎ـٓٔ٥ワ鴟خ٦ٕ⢪ֲ˖ 4UFUIP/FUXPSL*OTQFDUPS˖ 'MJQQFS/FUXPSL1MVHJO"1*鸐⥋ךⰻ㺁嗚鏾ׅ!137
˖ /FUXPSLةـד4UFUIP饯⹛⚥ח涪欰׃鸐⥋然钠דֹ4UFUIP/FUXPSL*OTQFDUPS!138
˖ "OESPJE1SPMFS⢪ֲ˖ /FUXPSL1SPMFS˖ ٓ؎ـٓٔ٥ワ鴟خ٦ٕ⢪ֲ˖ 4UFUIP/FUXPSL*OTQFDUPS˖ 'MJQQFS/FUXPSL1MVHJO"1*鸐⥋ךⰻ㺁嗚鏾ׅ!139
˖ 4UFUIPず圫ח0L)UUQ欽ְ鸐⥋ךⰻ㺁然钠ֿׅהָדֹ'MJQQFS/FUXPSL1MVHJO!140
/FUXPSL1SPMFSWT4UFUIP'MJQQFS!141/FUXPSL1SPMFS 4UFUIP'MJQQFS穈鴥ך㹋鄲 ♶銲 䗳銲涪欰׃鸐⥋ꆀך鎘庠 ؚٓؿד鋅 筨鎘ָ鋅鸐⥋ך鎘庠ך➬倯 儗眔㔲ד䭷㹀䌢ח崧גֻ嗚稊〳腉
/FUXPSL1SPMFSWT4UFUIP'MJQQFS!142/FUXPSL1SPMFS 4UFUIP'MJQQFS穈鴥ך㹋鄲 ♶銲 䗳銲涪欰׃鸐⥋ꆀך鎘庠 ؚٓؿד鋅 筨鎘ָ鋅鸐⥋ך鎘庠ך➬倯 儗眔㔲ד䭷㹀 䌢ח崧גֻ鸐⥋䭪ִ״ֲחׅ䗳銲ָ֮⢽0L)UUQ$MJFOUך*OUFSDFQUFS鷄⸇
/FUXPSL1SPMFSWT4UFUIP'MJQQFS!143/FUXPSL1SPMFS 4UFUIP'MJQQFS穈鴥ך㹋鄲 ♶銲 䗳銲涪欰׃鸐⥋ꆀך鎘庠 ؚٓؿד鋅 筨鎘ָ鋅鸐⥋ך鎘庠ך➬倯 儗眔㔲ד䭷㹀䌢ח崧גֻ嗚稊〳腉暴㹀ך乼⡲٥ة؎ىؚٝד涪欰׃גְ"1*鸐⥋嗚鏾ׅהֹח剣⸬
/FUXPSL1SPMFSWT4UFUIP'MJQQFS!144/FUXPSL1SPMFS 4UFUIP'MJQQFS穈鴥ך㹋鄲 ♶銲 䗳銲涪欰׃鸐⥋ꆀך鎘庠 ؚٓؿד鋅 筨鎘ָ鋅鸐⥋ך鎘庠ך➬倯 儗眔㔲ד䭷㹀䌢ח崧גֻ嗚稊〳腉暴㹀ך"1*嗚鏾׃ְ㜥さח剣⸬
畭劣%#ך嗚鏾ؚٗך《䖤 "1*鸐⥋ 畭劣%# 歗ٖ؎،ؐز #SFBLQPJOU
˖ 4UFUIP⢪ֲ˖ 3FTPVSDFT8FC42-˖ 'MJQQFS⢪ֲ˖ %BUBCBTF1MVHJO畭劣%#ךⰻ㺁嗚鏾ׅ!146
˖ 4UFUIP⢪ֲ˖ 3FTPVSDFT8FC42-˖ 'MJQQFS⢪ֲ˖ %BUBCBTF1MVHJO畭劣%#ךⰻ㺁嗚鏾ׅ!147
˖ 3FTPVSDFTةـד8FC42-ך⚥ַ42-JUFךذ٦ـٕ然钠דֹ4UFUIPד畭劣%#ך朐䡾然钠ׅ!148
˖ 4UFUIP⢪ֲ˖ 3FTPVSDFT8FC42-˖ 'MJQQFS⢪ֲ˖ %BUBCBTF1MVHJO畭劣%#ךⰻ㺁嗚鏾ׅ!149
˖ 4UFUIPず圫חٗ٦ٕؕ%#ך朐䡾然钠ֿׅהָדֹ%BUBCBTFT1MVHJOד畭劣%#ך朐䡾然钠ׅ!150
˖ 4UFUIPず圫חٗ٦ٕؕ%#ך朐䡾然钠ֿׅהָדֹ%BUBCBTFT1MVHJOד畭劣%#ך朐䡾然钠ׅ!151
˖ 4USVDUVSFةـדذ٦ـٕ圓鸡ך然钠ָדֹ%BUBCBTFT1MVHJOד畭劣%#ך朐䡾然钠ׅ!152
˖ 42-ةـד畭劣%#ח㼎׃גؙؒٔ涪遤דֹ%BUBCBTFT1MVHJOד畭劣%#ך朐䡾然钠ׅ!153
˖ 'MJQQFSךקֲָ4UFUIPה嫰鯰׃ג넝堣腉˖ ذ٦ـٕ圓鸡ך然钠ָדֹ˖ 畭劣%#ח㹋ꥷח42-俑涪遤דֹ4UFUIPWT'MJQQFS!154
歗ٖ؎،ؐزך嗚鏾ؚٗך《䖤 "1*鸐⥋ 畭劣%# 歗ٖ؎،ؐز #SFBLQPJOU
˖ ٖ؎،ؐزꥡ㾴然钠ׅ˖ -BZPVU*OTQFDUPS˖ 4UFUIP&MFNFOUT˖ 'MJQQFS-BZPVU1MVHJO˖ ぐ7JFXךNBSHJOװ؟؎ؤ然钠ׅ˖ )ZQFSJPO"OESPJEIZQFSJPONFBTVSFNFOU㹋堣דך歗ٖ؎،ؐزך朐䡾然钠ׅ!156
˖ ٖ؎،ؐزꥡ㾴然钠ׅ˖ -BZPVU*OTQFDUPS˖ 4UFUIP&MFNFOUT˖ 'MJQQFS-BZPVU1MVHJO˖ ぐ7JFXךNBSHJOװ؟؎ؤ然钠ׅ˖ )ZQFSJPO"OESPJEIZQFSJPONFBTVSFNFOU㹋堣דך歗ٖ؎،ؐزך朐䡾然钠ׅ!157
-BZPVU*OTQFDUPSⱄ䲓!158
-JWF-BZPVU*OTQFDUPS%7JFX"OESPJE4UVEJP!159
˖ ٖ؎،ؐزꥡ㾴然钠ׅ˖ -BZPVU*OTQFDUPS˖ 4UFUIP&MFNFOUT˖ 'MJQQFS-BZPVU1MVHJO˖ ぐ7JFXךNBSHJOװ؟؎ؤ然钠ׅ˖ )ZQFSJPO"OESPJEIZQFSJPONFBTVSFNFOU㹋堣דך歗ٖ؎،ؐزך朐䡾然钠ׅ!160
˖ $ISPNF%FW5PPMTד8FC؟؎ز鋅儗ה⡂״ֲז䠬ׄד鋅4UFUIPך&MFNFOUT!161
˖ ٖ؎،ؐزꥡ㾴然钠ׅ˖ -BZPVU*OTQFDUPS˖ 4UFUIP&MFNFOUT˖ 'MJQQFS-BZPVU1MVHJO˖ ぐ7JFXךNBSHJOװ؟؎ؤ然钠ׅ˖ )ZQFSJPO"OESPJEIZQFSJPONFBTVSFNFOU㹋堣דך歗ٖ؎،ؐزך朐䡾然钠ׅ!162
˖ 4UFUIPהず圫կ鼅䫛⚥ך7JFXכ㼎䘔׃גرغ؎أדع؎ٓ؎زַַָ'MJQQFSך-BZPVU1MVHJO!163
.BSHJO٥1BEEJOH瘝邌爙ׁגְ
˖ 'MJQQFSדכךفٗػذ؍箟꧊׃ծ僥ׇֿׁהדֹ'MJQQFSד7JFXך㾩䚍㢌刿ׅ!166
-BZPVU*OTQFDUPSWT4UFUIP'MJQQFS!167-BZPVU*OTQFDUPS 4UFUIP'MJQQFSٖ؎،ؐز刿倜כ⹛涸ַ涸ַ⹛涸⹛涸فٗػذ؍ך㢌刿 ♶〳UFYUUFYU$PMPS瘝ח〳'MJQQFSך
˖ ٖ؎،ؐزꥡ㾴然钠ׅ˖ -BZPVU*OTQFDUPS˖ 4UFUIP&MFNFOUT˖ 'MJQQFS-BZPVU1MVHJO˖ ぐ7JFXךNBSHJOװ؟؎ؤ然钠ׅ˖ )ZQFSJPO"OESPJEIZQFSJPONFBTVSFNFOU㹋堣דך歗ٖ؎،ؐزך朐䡾然钠ׅ!168
˖ 㹋堣♳דٖ؎،ؐزך朐䡾EQ⦼ד然钠דֹ˖ 鼅䫛׃7JFXך؟؎ؤ˖ 鼅䫛׃7JFXהⴽך7JFX1BSFOUךNBSHJOIZQFSJPONFBTVSFNFOU!169
˖ 㹋堣♳דٖ؎،ؐزך朐䡾EQ⦼ד然钠דֹ˖ 鼅䫛׃7JFXך؟؎ؤ˖ 鼅䫛׃7JFXהⴽך7JFX1BSFOUךNBSHJOIZQFSJPONFBTVSFNFOU!170姻然חٖ؎،ؐزךך㹋鄲ָדֹגְַ嗚鏾ֿׅהָדֹ
⤑ⵃז#SFBLQPJOUؚٗך《䖤 "1*鸐⥋ 畭劣%# 歗ٖ؎،ؐز #SFBLQPJOU
˖ &YDFQUJPO#SFBLQPJOU˖ $POEJUJPO#SFBLQPJOU˖ #SFBLQPJOUך剣⸬䚍ך㢌⻉˖ 3FNPWFPODFIJU˖ %JTBCMFVOUJMCSFBLQPJOUJTIJU⤑ⵃז#SFBLQPJOU!172
˖ &YDFQUJPO#SFBLQPJOU˖ $POEJUJPO#SFBLQPJOU˖ #SFBLQPJOUך剣⸬䚍ך㢌⻉˖ 3FNPWFPODFIJU˖ %JTBCMFVOUJMCSFBLQPJOUJTIJU⤑ⵃז#SFBLQPJOU!173
˖ &YDFQUJPO涪欰儗חـٖ٦ׇֿׁؙהָדֹ#SFBLQPJOU&YDFQUJPO#SFBLQPJOU!174
˖ &YDFQUJPO涪欰儗חـٖ٦ׇֿׁؙהָדֹ#SFBLQPJOU&YDFQUJPO#SFBLQPJOU!175⟣䠐ך&YDFQUJPOָUISPXׁـٖ٦ؙ
˖ &YDFQUJPO涪欰儗חـٖ٦ׇֿׁؙהָדֹ#SFBLQPJOU&YDFQUJPO#SFBLQPJOU!176䭷㹀׃&YDFQUJPOָUISPXׁـٖ٦ؙ
˖ &YDFQUJPO涪欰儗חـٖ٦ׇֿׁؙהָדֹ#SFBLQPJOU&YDFQUJPO#SFBLQPJOU!177+BWB&YDFQUJPO#SFBLQPJOU鷄⸇׃גـٖ٦ؙׅ㼎韋ך&YDFQUJPO䭷㹀⳿勻
˖ $BUDIDMBTTMUFST暴㹀ؙٓأדך&YDFQUJPO涪欰儗חךـٖ٦ׇׁؙ!178
䭷㹀׃ؙٓأַ&YDFQUJPOָUISPXׁ㜥さךـٖ٦ؙׅꤐ㢩〳腉
˖ &YDFQUJPO#SFBLQPJOU˖ $POEJUJPO#SFBLQPJOU˖ #SFBLQPJOUך剣⸬䚍ך㢌⻉˖ 3FNPWFPODFIJU˖ %JTBCMFVOUJMCSFBLQPJOUJTIJU⤑ⵃז#SFBLQPJOU!180
˖ 勴⟝弫ׅ儗ךـٖ٦ؙׅ#SFBLQPJOU$POEJUJPO#SFBLQPJOU!181
˖ 鏣㹀׃䒭ך怴皾穠卓ָUSVFהֹךـٖ٦ؙׅ˖ 醱侧㔐㹋遤ָׁծ暴㹀勴⟝ךⰅ⸂ָ֮ꥷך嗚鏾瘝ד剣⸬$POEJUJPO#SFBLQPJOU!182
˖ &YDFQUJPO#SFBLQPJOU˖ $POEJUJPO#SFBLQPJOU˖ #SFBLQPJOUך剣⸬䚍ך㢌⻉˖ 3FNPWFPODFIJU˖ %JTBCMFVOUJMCSFBLQPJOUJTIJU⤑ⵃז#SFBLQPJOU!184
˖ ♧䏝ֽ剣⸬חז#SFBLQPJOU鏣㹀דֹ3FNPWFPODFIJU!185
˖ ♧䏝ֽ剣⸬חז#SFBLQPJOU鏣㹀דֹ3FNPWFPODFIJU!1863FNPWFPODFIJU剣⸬儗חـٖ٦ؙׅהך#SFBLQPJOUָꤐׁ
˖ &YDFQUJPO#SFBLQPJOU˖ $POEJUJPO#SFBLQPJOU˖ #SFBLQPJOUך剣⸬䚍ך㢌⻉˖ 3FNPWFPODFIJU˖ %JTBCMFVOUJMCSFBLQPJOUJTIJU⤑ⵃז#SFBLQPJOU!187
˖ ➭ך#SFBLQPJOUח״גـٖ٦ؙ׃㜥さחךծ剣⸬חז%JTBCMFVOUJMCSFBLQPJOUJTIJU!188
˖ 剣⸬חזגـٖ٦ؙ׃䖓ծ搀⸬ח䨱ַ剣⸬חז竲ַֽ鼅ץ%JTBCMFVOUJMCSFBLQPJOUJTIJU!189ـٖ٦ؙ䖓כ搀⸬ח䨱ךדծⱄ䏝#SFBLQPJOU"鸐䗳銲ָ֮#SFBLQPJOU" #SFBLQPJOU#
˖ 剣⸬חזגـٖ٦ؙ׃䖓ծ搀⸬ח䨱ַ剣⸬חז竲ַֽ鼅ץ%JTBCMFVOUJMCSFBLQPJOUJTIJU!190ـٖ٦ؙ䖓剣⸬זךדծ#SFBLQPJOU"鸐זֻג0,#SFBLQPJOU" #SFBLQPJOU#
˖ "OESPJE،فٔ涪חֶֽرغحؚ䩛岀חאְג稱➜׃˖ "OESPJE4UVEJPךرغحؚ堣腉˖ خ٦ٕ欽ְرغحؚ˖ ֿך䩛岀⡤禸涸ח濼ֿהדرغحؚ鸞䏝ךぢ♳חאזָ˖ չ،فٔךוֿד⡦ָ饯ֹגְךַպך䪾䳢ך⸬桦⻉חז˖ ،فٔח㼎׃גך濼陎ָ帾תծ涪ך⸬桦⻉⸔ֽתה!191
˖ #SFBLQPJOU)FMQ]*OUFMMJ+*%&"˖ IUUQTXXXKFUCSBJOTDPNIFMQJEFBVTJOHCSFBLQPJOUTIUNM˖ "OESPJE1SPMFSד،فٔךػؿؓ٦وٝأ庠㹀ׅ]"OESPJE%FWFMPQFST˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFBOESPJEQSPMFS IMKB˖ $161SPMFS⢪欽׃ג$16"DUJWJUZהًاحسزٖ٦أ嗚叨ׅ]"OESPJE%FWFMPQFST˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFDQVQSPMFSIUNM IMKB˖ .FNPSZ1SPMFS⢪欽׃ג+BWBؼ٦فהًٌٔⶴ䔲ג邌爙ׅ]"OESPJE%FWFMPQFST˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFNFNPSZQSPMFSIUNM IMKB˖ /FUXPSL1SPMFS⢪欽׃גطحزٙ٦ؙزٓؿ؍حؙ嗚叨ׅ]"OESPJE%FWFMPQFST˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFOFUXPSLQSPMFSIUNM IMKB˖ &OFSHZ1SPMFS⢪欽׃גؒطؘٕ٦⢪欽ꆀ锃ץ]"OESPJE%FWFMPQFST˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPMFFOFSHZQSPMFSIUNM IMKB3FGFSFODFT!192
˖ /FX'FBUVSFTJO"OESPJE4UVEJP1SFWJFX]"OESPJE%FWFMPQFST˖ IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSFWJFXGFBUVSFT˖ 5JNCFS˖ IUUQTHJUIVCDPN+BLF8IBSUPOUJNCFS˖ 'MJQQFS˖ IUUQGBDFCPPLHJUIVCJPTUFUIP˖ 'MJQQFS˖ IUUQTGCJQQFSDPN˖ -FBL$BOBSZ˖ IUUQTTRVBSFHJUIVCJPMFBLDBOBSZ˖ )ZQFSJPO"OESPJEד"OESPJE،فٔرغحؚ׃״ֲ]2JJUB˖ IUUQTRJJUBDPNUBLBIJSPNJUFNTGGEEEDF3FGFSFODFT!193