1 00:00:00,000 --> 00:00:01,440 1. RUNĀTĀJS: Esiet sveicināti. 2 00:00:01,440 --> 00:00:04,310 Mani sauc Kārters, un šodien es jums parādīšu savu slepeno programmu. 3 00:00:04,310 --> 00:00:07,535 Programmu var palaist, terminālī ierakstot ./secret, un, ja ievadāt 4 00:00:07,535 --> 00:00:10,760 pareizo paroli, jums vajadzētu redzēt come on in. 5 00:00:10,760 --> 00:00:11,880 Tad izmēģināsim to. 6 00:00:11,880 --> 00:00:15,322 Es ievadīšu ./secret, un varbūt es nezinu slepeno frāzi, tāpēc es 7 00:00:15,322 --> 00:00:18,765 vienkārši teikšu, let me in. 8 00:00:18,765 --> 00:00:20,640 Un tajā brīdī es nesaņemu nekādu atbildi. 9 00:00:20,640 --> 00:00:23,270 Tāpēc ļaujiet man mēģināt vēlreiz un ievadīt ./secret. 10 00:00:23,270 --> 00:00:26,490 Varbūt parole šeit ir password. 11 00:00:26,490 --> 00:00:27,350 Bet tā nav. 12 00:00:27,350 --> 00:00:29,940 Un es jums tikai atklāšu, ka parole ir please. 13 00:00:29,940 --> 00:00:32,555 Tātad, ja es ierakstu ./secret un ierakstu please, tad man vajadzētu 14 00:00:32,555 --> 00:00:35,170 redzēt come on in. 15 00:00:35,170 --> 00:00:36,940 Bet es neredzu. 16 00:00:36,940 --> 00:00:38,950 Un tad kas šeit ir par problēmu? 17 00:00:38,950 --> 00:00:40,720 Nu, varbūt man vajadzētu izpētīt savu kodu un, iespējams, iziet tam 18 00:00:40,720 --> 00:00:42,490 cauri soli pa solim. 19 00:00:42,490 --> 00:00:46,490 Tāpēc es ievadīšu kodu secret.c, un es redzu, ka mans kods sākas ar 20 00:00:46,490 --> 00:00:50,490 int main(void) funkciju. 21 00:00:50,490 --> 00:00:52,920 Lai izietu cauri manam kodam, atcerieties, ka varam izmantot debug50, 22 00:00:52,920 --> 00:00:55,350 lai iestatītu pārtraukumpunktu vai pauzes vietu savā kodā. 23 00:00:55,350 --> 00:00:59,053 Tāpēc es varu pāriet uz šo kreiso pusi, atrast gaiši sarkanu apli un, 24 00:00:59,053 --> 00:01:02,756 noklikšķinot uz tā, pārvērst to spilgti sarkanā aplī, un iestatīt 25 00:01:02,756 --> 00:01:06,460 pauzes punktu vai pārtraukumpunktu. 26 00:01:06,460 --> 00:01:10,053 Tagad es varu veikt noslēpuma debug50, un tad manam kodam vajadzētu 27 00:01:10,053 --> 00:01:13,646 sāknēties, un man vajadzētu būt iespējai apstāties tieši tajā brīdī, 28 00:01:13,646 --> 00:01:17,240 kad prasu lietotājam viņa slepeno frāzi. 29 00:01:17,240 --> 00:01:20,336 Protams, man ir jāiet soli pa solim, lai tā patiešām palaistu manu 30 00:01:20,336 --> 00:01:23,433 programmu, tāpēc es iešu pa soļiem, un tad varu ierakstīt savu 31 00:01:23,433 --> 00:01:26,530 slepeno frāzi please. 32 00:01:26,530 --> 00:01:27,780 Labi, tas izskatās diezgan labi. 33 00:01:27,780 --> 00:01:30,023 Es redzu, ka frāze kļūstplease, un pareizais pašlaik ir nepatiess, 34 00:01:30,023 --> 00:01:32,266 taču tam vajadzētu mainīties uz patiesu, kad es ievadu check phrase 35 00:01:32,266 --> 00:01:34,510 funkciju. 36 00:01:34,510 --> 00:01:36,665 Tāpēc es ievadīšu check phrase, un es redzu, ka tas joprojām ir 37 00:01:36,665 --> 00:01:38,820 nepatiess. 38 00:01:38,820 --> 00:01:43,130 Un tāpēc, protams, ja es palaidu 13. rindu, nekas nenotiek. 39 00:01:43,130 --> 00:01:46,296 Es tiešām nedrukāšu come on in. Tāpēc šobrīd šķiet, ka debug50 man 40 00:01:46,296 --> 00:01:49,463 šeit īsti nepalīdz. 41 00:01:49,463 --> 00:01:51,821 Esmu izgājis cauri visai savai programmai, taču neesmu redzējis, kas 42 00:01:51,821 --> 00:01:54,180 manā kodā nogāja greizi. 43 00:01:54,180 --> 00:01:57,425 Debug50 ir iespēja ieiet funkcijā, burtiski ienirt tajā un redzēt, 44 00:01:57,425 --> 00:02:00,670 kas notiek zem šīs funkcijas pārsega. 45 00:02:00,670 --> 00:02:04,617 Tātad, ko es varu darīt – vēlreiz doties uz debug50 un palaist 46 00:02:04,617 --> 00:02:08,565 debug50 ar noslēpumu, pagaidīt līdz mans kods atkal nonāks šajā 47 00:02:08,565 --> 00:02:12,512 pārtraukumpunktā, un es iziešu cauri pirmajam fragmentam, kurā 48 00:02:12,512 --> 00:02:16,460 ierakstīju savu frāzi please. 49 00:02:16,460 --> 00:02:20,075 Bet tagad tā vietā, lai izietu šai check phrase funkcijai, es 50 00:02:20,075 --> 00:02:23,690 patiesībā vēlos iedziļināties tajā un redzēt, kas tur notiek. 51 00:02:23,690 --> 00:02:26,500 Tāpēc es iedziļināšos debug50 un tad skatīšos, es iestatu savu paroli 52 00:02:26,500 --> 00:02:29,310 uz please. 53 00:02:29,310 --> 00:02:32,550 Tātad, ja es eju cauri 22. rindiņai, man vajadzētu redzēt, ka parole 54 00:02:32,550 --> 00:02:35,790 kļūst please, tāpat kā šajā kreisajā pusē. 55 00:02:35,790 --> 00:02:38,446 Un tagad, kad es pārbaudu, vai frāze ir parole, man patiesībā 56 00:02:38,446 --> 00:02:41,103 vajadzētu būt iespējai atgriezt patiesu, jo šķiet, ka šī frāze ir 57 00:02:41,103 --> 00:02:43,760 tāda pati kā parole. 58 00:02:43,760 --> 00:02:45,765 Tāpēc es iešu tam cauri, un skataties –patiesībā, es nonāku līdz 29. 59 00:02:45,765 --> 00:02:47,770 rindai. 60 00:02:47,770 --> 00:02:50,405 Un tas ir diezgan smalki, taču C valodā nevar salīdzināt divas 61 00:02:50,405 --> 00:02:53,040 virknes, izmantojot divas vienādas zīmes. 62 00:02:53,040 --> 00:02:55,650 Jūs faktiski varētu izmantot citu funkciju, ko sauc par string 63 00:02:55,650 --> 00:02:58,260 compare (virkņu salīdzināšanu) vai saīsināti strcmp. 64 00:02:58,260 --> 00:03:02,070 Tātad, lai izmantotu strcompare, es varu izmantot strcmp un dot tai 65 00:03:02,070 --> 00:03:05,880 divus argumentus, frāzi un paroli. 66 00:03:05,880 --> 00:03:08,490 Un, izmantojot šīs divas ievades, strcompare man pateiks, vai tās ir 67 00:03:08,490 --> 00:03:11,100 līdzvērtīgas vai nav. 68 00:03:11,100 --> 00:03:14,100 Ja tās ir līdzvērtīgas, strcmp-- vai strcompare-- kā vērtību 69 00:03:14,100 --> 00:03:17,100 atgriezīs man 0. 70 00:03:17,100 --> 00:03:20,126 Tāpēc tagad mans kods saka: ja šīs virknes ir līdzvērtīgas — un es 71 00:03:20,126 --> 00:03:23,153 zinu, ka tās ir, jo strcompare dod man nulli, es varu turpināt , 72 00:03:23,153 --> 00:03:26,180 atgriezt patiesu un teikt, ka šī ir pareizā parole. 73 00:03:26,180 --> 00:03:29,210 Tātad, izmantojot šo jauno kodu, man vajadzētu būt iespējai iziet no 74 00:03:29,210 --> 00:03:32,240 debug50 un atgriezties terminālī. 75 00:03:32,240 --> 00:03:36,430 Un tagad es varu atkal izveidot noslēpumu, palaist noslēpumu, 76 00:03:36,430 --> 00:03:40,620 ierakstīt savu paroli please, un tagad te tas ir. 77 00:03:40,620 --> 00:03:42,000 Tas saka: come on in. 78 00:03:42,000 --> 00:03:44,646 Līdz ar to mēs esam redzējuši, kā debug50 var mums palīdzēt ne tikai 79 00:03:44,646 --> 00:03:47,293 pārvarēt kodu, bet arī iedziļināties funkcijās un redzēt tajās esošās 80 00:03:47,293 --> 00:03:49,940 kļūdas.