1 00:00:07,170 --> 00:00:12,630 [Powered by Google Translate] GDB, το Έργο GNU Debugger, είναι ένα ισχυρό εργαλείο εντοπισμού σφαλμάτων για C, 2 00:00:12,630 --> 00:00:14,300 μαζί με πολλές άλλες γλώσσες. 3 00:00:14,300 --> 00:00:17,440 Σας επιτρέπει να σακί γύρω από μέσα σας προγράμματα C, ενώ από όπου και αν την εκτέλεση, 4 00:00:17,440 --> 00:00:20,880 και αυτό σας δίνει επίσης την ευκαιρία να δούμε ακριβώς τι συμβαίνει 5 00:00:20,880 --> 00:00:22,490 όταν κολλάει το πρόγραμμά σας. 6 00:00:22,490 --> 00:00:24,690 Είναι αρκετά ικανό, έτσι δεν είναι; 7 00:00:24,690 --> 00:00:27,980 GDB είναι ελεύθερο λογισμικό, και λειτουργεί με πολλά δημοφιλή UNIX και 8 00:00:27,980 --> 00:00:31,840 Που βασίζονται στα Windows λειτουργικά συστήματα, γι 'αυτό είναι ένα πολύ διαδεδομένο εργαλείο. 9 00:00:31,840 --> 00:00:33,560 >> Θα πρέπει να μάθουν να το αγαπούν. 10 00:00:33,560 --> 00:00:36,800 GDB επαγγελματίες έχουν έναν πολύ ευκολότερο χρόνο τον εντοπισμό bugs 11 00:00:36,800 --> 00:00:39,150 από εκείνους που έχουν λυθεί με εικασίες 12 00:00:39,150 --> 00:00:41,420 και άπειρες ποσότητες των καταστάσεων εκτύπωσης. 13 00:00:41,420 --> 00:00:45,810 GDB είναι ένα εργαλείο γραμμής εντολών, το οποίο σημαίνει ότι μπορείτε να αλληλεπιδράσετε με αυτό σε ένα τερματικό 14 00:00:45,810 --> 00:00:49,720 εκδίδει εντολές μέσω του πληκτρολογίου αντί να κάνετε κλικ με το ποντίκι κουμπιά σας. 15 00:00:49,720 --> 00:00:54,960 >> Για να ξεκινήσετε GDB, μπορείτε κυριολεκτικά απλά πληκτρολογήστε gdb στην προτροπή και πατήστε enter. 16 00:00:54,960 --> 00:00:58,230 Θα δείτε μερικές γραμμές εκτυπώνονται στην οθόνη 17 00:00:58,230 --> 00:01:00,810 δείχνοντάς σας την έκδοση της GDB ότι τρέχετε, 18 00:01:00,810 --> 00:01:07,890 πληροφορίες πνευματικών δικαιωμάτων του, και στο τέλος θα δείτε το GDB εντολών: (gdb). 19 00:01:07,890 --> 00:01:10,770 Αυτό σας επιτρέπει να γνωρίζετε ότι GDB είναι έτοιμο για εντολές. 20 00:01:10,770 --> 00:01:15,400 Σε αυτό το σημείο, το πιο σημαντικό πράγμα που πρέπει να ξέρετε πώς να κάνετε είναι να σταματήσουν το κάπνισμα. 21 00:01:15,400 --> 00:01:17,790 Ευτυχώς, αυτό είναι αρκετά απλή. 22 00:01:17,790 --> 00:01:19,840 Η εντολή quit κάνει ακριβώς αυτό. 23 00:01:19,840 --> 00:01:23,090 Ως συντόμευση, μπορείτε να χρησιμοποιήσετε μόνο q πάρα πολύ. 24 00:01:23,090 --> 00:01:27,410 Όπως διασκεδαστικό ως εκκίνηση GDB και στη συνέχεια, αμέσως εγκατάλειψη είναι, 25 00:01:27,410 --> 00:01:30,800 Ας μιλήσουμε τώρα για τη χρήση GDB για να βοηθήσει τον εντοπισμό σφαλμάτων ενός προγράμματος. 26 00:01:30,800 --> 00:01:34,630 >> Για να ξεκινήσετε, έχω εδώ ένα πρόγραμμα σε factorial.c 27 00:01:34,630 --> 00:01:37,380 που παίρνει ένα int και προσπαθεί να υπολογίσει το παραγοντικό του. 28 00:01:37,380 --> 00:01:41,270 Σε περίπτωση που δεν έχετε δει πριν παραγοντικών ή δεν τα θυμάμαι, 29 00:01:41,270 --> 00:01:47,840 Το παραγοντικό του αριθμού n είναι ίσο με το γινόμενο των n - (n - 1), (n - 2), και ούτω καθεξής - 30 00:01:47,840 --> 00:01:49,230 μέχρι να χτυπήσει 1. 31 00:01:49,230 --> 00:01:54,550 Συνεπώς, το παραγοντικό του 3 είναι 3 * 2 * 1, ή 6, 32 00:01:54,550 --> 00:02:00,180 και το παραγοντικό του 4 είναι 4 * 3 * 2 * 1, ή 24. 33 00:02:00,180 --> 00:02:03,970 Το παραγοντικό του μηδέν είναι μια περίεργη περίπτωση, είναι 1, 34 00:02:03,970 --> 00:02:06,970 και δεν ορίζονται οι παραγοντικών των αρνητικών ακεραίων. 35 00:02:06,970 --> 00:02:10,280 Τέλος πάντων, κάτι για το παραγοντικό πρόγραμμα μου είναι funky. 36 00:02:10,280 --> 00:02:15,410 Όταν το τρέχω, να εκτυπώνει περίεργα αριθμούς που δεν έχουν καμία σχέση με παραγοντικών. 37 00:02:15,410 --> 00:02:19,030 >> Έτσι, μπορούμε να χρησιμοποιήσουμε GDB για να βοηθήσει να καταλάβω τι συμβαίνει. 38 00:02:19,030 --> 00:02:21,720 GDB δραστηριοποιείται σε εκτελέσιμα αρχεία, 39 00:02:21,720 --> 00:02:24,910 που είναι τα δυαδικά αρχεία που παράγονται από τη διαδικασία μεταγλώττισης. 40 00:02:24,910 --> 00:02:30,940 Δηλαδή, δεν μπορούμε να τρέξει για GDB. Ή γ μας. H αρχεία πηγαίου κώδικα, όπως factorial.c. 41 00:02:30,940 --> 00:02:34,650 Θέλουμε να τρέξει σε παραγοντικό μόνο αντ 'αυτού. 42 00:02:34,650 --> 00:02:38,340 Εάν το πρόγραμμα που απαιτείται οποιαδήποτε ορίσματα της γραμμής εντολών, 43 00:02:38,340 --> 00:02:40,230 αυτό είναι που θα τους καθορίσει. 44 00:02:40,230 --> 00:02:44,050 Σε αυτή την περίπτωση, παραγοντικό δεν απαιτεί ορίσματα της γραμμής εντολών, 45 00:02:44,050 --> 00:02:46,410 έτσι απλά πληκτρολογήστε τρέξιμο ή r για συντομία. 46 00:02:46,410 --> 00:02:50,440 >> Αυτό θα ξεκινήσει η παραγοντική λειτουργία του προγράμματος. 47 00:02:50,440 --> 00:02:53,940 Όταν το πρόγραμμα σταματάει, θα πάρω GDB μου ζητήσει πίσω. 48 00:02:53,940 --> 00:02:58,130 Εντάξει, ας προσπαθήσουμε ξανά το ίδιο πράγμα, παραγοντικό του 4. 49 00:02:58,130 --> 00:03:02,910 Εντάξει, θα δούμε ότι παίρνουμε το ίδιο είδος σκουπίδια εδώ στην GDB. 50 00:03:02,910 --> 00:03:04,850 Τώρα που το πρόγραμμα έχει τελειώσει, 51 00:03:04,850 --> 00:03:06,870 δεν μπορούμε να πάμε και να προσπελάσετε οποιαδήποτε κατάσταση, 52 00:03:06,870 --> 00:03:09,870 έτσι θα πρέπει να ξεκινήσει να τρέχει και πάλι για να μπορέσουμε να δούμε τι συμβαίνει. 53 00:03:09,870 --> 00:03:13,570 Ωστόσο, χρειαζόμαστε έναν τρόπο να το σταματήσει, ενώ είναι στη μέση της διαδρομής του. 54 00:03:13,570 --> 00:03:16,970 >> Για να γίνει αυτό, χρησιμοποιούμε αυτό που ονομάζεται ένα σημείο διακοπής. 55 00:03:16,970 --> 00:03:21,880 Breakpoints πει GDB να σταματήσει το πρόγραμμα σε μια συγκεκριμένη λειτουργία ή πηγή γραμμή κώδικα 56 00:03:21,880 --> 00:03:24,070 έτσι ώστε να μπορούμε να εξετάσουμε την κατάσταση του προγράμματος, 57 00:03:24,070 --> 00:03:27,380 οι τιμές των μεταβλητών, η κατάσταση της μνήμης και τέτοια, σε εκείνο το σημείο. 58 00:03:27,380 --> 00:03:30,750 Επειδή εγώ δεν ξέρω πραγματικά, όπου τα πράγματα πάνε στραβά, 59 00:03:30,750 --> 00:03:33,510 >> Θέλω απλά να αρχίσει debugging δικαίωμα στην αρχή, 60 00:03:33,510 --> 00:03:36,510 δικαίωμα όταν αρχίζει κύρια. 61 00:03:36,510 --> 00:03:39,260 Θα ορίσετε ένα breakpoint στην αρχή της κύριας χρησιμοποιώντας την εντολή break. 62 00:03:39,260 --> 00:03:42,640 Μπορούμε επίσης να χρησιμοποιήσουμε το b για να συντομεύσει διάλειμμα. 63 00:03:42,640 --> 00:03:45,000 Τώρα ας ξεκινήσουμε το πρόγραμμα τρέχει και πάλι. 64 00:03:45,000 --> 00:03:48,140 Εδώ είμαστε στην αρχή της κύριας, ακριβώς όπως μας λέει GDB. 65 00:03:48,140 --> 00:03:51,970 Η γραμμή του κώδικα που είναι έτοιμος να εκτελέσει, αλλά δεν έχει ακόμη 66 00:03:51,970 --> 00:03:53,480 printf είναι η γραμμή. 67 00:03:53,480 --> 00:03:57,200 Μπορούμε να πούμε GDB να εκτελέσει αυτή τη γραμμή του κώδικα και να πάει στην επόμενη γραμμή 68 00:03:57,200 --> 00:03:59,840 με την επόμενη εντολή ή n. 69 00:03:59,840 --> 00:04:04,120 >> Εντάξει, τώρα GDB μας λέει ότι είμαστε στη γραμμή GetInt. 70 00:04:04,120 --> 00:04:06,630 Ξέρω ότι φαίνεται σαν η γραμμή printf δεν τρέχει 71 00:04:06,630 --> 00:04:10,070 δεδομένου ότι δεν βλέπουμε "Εισάγετε ένα θετικό ακέραιο" εκτύπωση στην οθόνη, 72 00:04:10,070 --> 00:04:12,040 αλλά δεν λειτουργεί πραγματικά. 73 00:04:12,040 --> 00:04:16,029 Αυτό που βλέπουμε είναι το λειτουργικό σύστημα καταστείλει τίποτα γραπτώς στην οθόνη 74 00:04:16,029 --> 00:04:19,649 έως ότου να έχει απολύτως, γιατί το οποίο αποσφαλμάτωση με εκτυπώσεις 75 00:04:19,649 --> 00:04:21,730 μπορεί μερικές φορές να φαίνεται αναξιόπιστη. 76 00:04:21,730 --> 00:04:26,240 Τέλος πάντων, ας πάμε πάλι στην επόμενη γραμμή του κώδικα και να τεθεί σε int. 77 00:04:26,240 --> 00:04:30,070 Και πάλι, ας τύπου 4. 78 00:04:30,070 --> 00:04:34,540 Έτσι, αυτό φαίνεται παράξενο. Είμαστε στην γραμμή 12, σύμφωνα με GDB, 79 00:04:34,540 --> 00:04:37,660 αλλά η επόμενη γραμμή που είναι έτοιμος να εκτελέσει είναι απλά ένα άγκιστρο. 80 00:04:37,660 --> 00:04:42,110 >> Αυτό απλά σημαίνει ότι είμαστε στο τέλος του βρόχου, ενώ μας κάνει θηλιά στην πραγματικότητα, 81 00:04:42,110 --> 00:04:46,710 GDB και μας λέει ότι η κατάσταση τερματισμού, δηλαδή κανένας κάτω από το μηδέν, 82 00:04:46,710 --> 00:04:48,010 θα εκτελέσει επόμενο. 83 00:04:48,010 --> 00:04:50,230 Αν αυτό γίνεται πάντα μια μικρή σύγχυση, 84 00:04:50,230 --> 00:04:54,860 μπορούμε να σηκώσει τον πηγαίο κώδικα σε GDB με τη λίστα ή εντολή l. 85 00:04:54,860 --> 00:04:56,880 Αυτό εκτυπώνει τον πηγαίο κώδικα 86 00:04:56,880 --> 00:04:59,010 Αυτό είναι επικεντρωμένη γύρω από τη γραμμή που είμαστε σήμερα σε. 87 00:04:59,010 --> 00:05:03,590 Αν πληκτρολογήσετε λίστα ή l και πάλι, θα δούμε το επόμενο σύνολο των γραμμών εκτυπώσετε. 88 00:05:03,590 --> 00:05:06,070 Μπορούμε να το κάνουμε αυτό μέχρι να χτυπήσει το τέλος του αρχείου. 89 00:05:06,070 --> 00:05:11,210 >> Για να επιστρέψετε στο σημείο όπου βρισκόμασταν, θα μπορεί να παρέχει λίστα με τον αριθμό της γραμμής, 90 00:05:11,210 --> 00:05:14,120 στην περίπτωση αυτή, της γραμμής 12. 91 00:05:14,120 --> 00:05:16,040 Τέλος πάντων, ας προχωρήσουμε. 92 00:05:16,040 --> 00:05:18,240 Τώρα είμαστε στο βρόχο 4. 93 00:05:18,240 --> 00:05:21,490 Ας βεβαιωθείτε ότι μεταβλητή num μας περιέχει 4. 94 00:05:21,490 --> 00:05:26,170 Το κάνουμε αυτό με την εκτύπωση, ή p, εντολή. 95 00:05:26,170 --> 00:05:31,140 Έτσι, GDB μας λέει ότι num αποθηκεύει πράγματι 4, όπως περιμέναμε. 96 00:05:31,140 --> 00:05:35,180 Το $ 1 ότι GDB είναι εκτυπώνει από μια ειδική μεταβλητή GDB 97 00:05:35,180 --> 00:05:37,720 Αυτό είναι τώρα να αποθηκεύσετε το 4, καθώς και τον αριθμό. 98 00:05:37,720 --> 00:05:42,240 Μπορείτε να αγνοήσετε αυτό για τώρα, αλλά αυτές οι μεταβλητές GDB έρχονται σε σούπερ βολικό 99 00:05:42,240 --> 00:05:46,380 σε πιο προχωρημένες περιπτώσεις, όταν θέλετε να θυμάστε τι έχετε κάνει στο παρελθόν. 100 00:05:46,380 --> 00:05:50,970 Τέλος πάντων, κινούνται με την επόμενη, βλέπουμε ότι έχουμε αρχίσει να κινείται μέσα από το βρόχο for. 101 00:05:50,970 --> 00:05:54,790 Ας συνεχίσουμε από εδώ με λίγο n-σιγά. 102 00:05:54,790 --> 00:05:58,280 Αντί να πληκτρολογείτε n κάθε φορά, μπορείτε επίσης απλά πατήστε enter. 103 00:05:58,280 --> 00:06:03,710 Όταν πατήστε enter χωρίς να πληκτρολογήσετε τίποτα, GDB επαναλαμβάνει απλώς την προηγούμενη εντολή. 104 00:06:03,710 --> 00:06:05,910 Έτσι τώρα έχουμε χτυπήσει το printf κλήση. 105 00:06:05,910 --> 00:06:09,520 Μοιάζει όντως έχουμε περάσει από μας για βρόχο 4 φορές, 106 00:06:09,520 --> 00:06:13,750 το οποίο είναι αυτό που θέλουμε να κάνουμε, ώστε να πολλαπλασιάζουμε με 1, 2, 3, και 4. 107 00:06:13,750 --> 00:06:15,870 >> Τα πάντα φαίνεται σαν να δουλεύει, 108 00:06:15,870 --> 00:06:19,680 εκτός όταν χτυπάμε επόμενη φορά θα έχουμε αυτό το τεράστιο αριθμό αντί για 24. 109 00:06:19,680 --> 00:06:23,100 Αν εκτυπώσετε την αξία του παραγοντικό σ. χρήση, 110 00:06:23,100 --> 00:06:26,120 βλέπουμε ότι παραγοντικό δεν έχει αυτό το τεράστιο αριθμό σε αυτό. 111 00:06:26,120 --> 00:06:28,740 Κάτι σίγουρα πηγαίνει στραβά. 112 00:06:28,740 --> 00:06:31,960 Σε αυτό το σημείο, όμως, είμαστε σχεδόν στο τέλος του προγράμματος, 113 00:06:31,960 --> 00:06:34,610 και είναι πάρα πολύ αργά για να διορθώσετε κάτι. 114 00:06:34,610 --> 00:06:39,750 >> Ωστόσο, μπορούμε να επανεκκινήσετε το πρόγραμμα πληκτρολογώντας r και πάλι και στη συνέχεια y για να επιβεβαιώσετε. 115 00:06:39,750 --> 00:06:43,460 Τώρα είμαστε πίσω στο σημείο διακοπής μας κατά την έναρξη της κύριας. 116 00:06:43,460 --> 00:06:46,600 Γνωρίζουμε ότι τα πάντα φαίνεται να είναι εντάξει με την ανάγνωση του ν. 117 00:06:46,600 --> 00:06:48,630 ώστε να μπορούμε να βγαίνουμε μπροστά με n. 118 00:06:48,630 --> 00:06:52,280 Εναλλακτικά, μπορούμε να ορίσουμε ένα νέο σημείο διακοπής μετά το κάνετε, ενώ βρόχο 119 00:06:52,280 --> 00:06:54,910 και άλμα εκεί. Ας το κάνουμε αυτό. 120 00:06:54,910 --> 00:06:59,080 Μοιάζει γραμμή 14 έρχεται αμέσως μετά το βρόχο. 121 00:06:59,080 --> 00:07:01,070 Ας ορίσετε ένα breakpoint εκεί. 122 00:07:01,070 --> 00:07:05,220 Είναι καλή πρακτική να καθορίσετε το όνομα του αρχείου σε αυτήν την εντολή breakpoint 123 00:07:05,220 --> 00:07:08,480 από GDB μπορεί να μπερδευτείτε αν εργάζεστε με πολλά αρχεία. 124 00:07:08,480 --> 00:07:13,230 Για να προχωρήσουμε από αυτό το σημείο διακοπής, θα χρησιμοποιήσουμε το continue ή γ εντολή. 125 00:07:13,230 --> 00:07:16,570 >> Εντάξει, εδώ είμαστε στο βρόχο for. 126 00:07:16,570 --> 00:07:19,060 Ας πάμε 1 επιπλέον γραμμή μέσα στο βρόχο for, 127 00:07:19,060 --> 00:07:21,630 και στη συνέχεια θα αρχίσουμε μεταβλητές εκτύπωσης για να δείτε τι συμβαίνει. 128 00:07:21,630 --> 00:07:26,410 Ας βεβαιωθείτε ότι το i είναι πράγματι 1, όπως αναμένεται. 129 00:07:26,410 --> 00:07:28,300 Ναι, αυτό είναι όλα καλά. 130 00:07:28,300 --> 00:07:30,270 Τι γίνεται με το παραγοντικό όμως; 131 00:07:30,270 --> 00:07:33,760 Πω πω, που δεν είναι καλό. 132 00:07:33,760 --> 00:07:35,800 Έχουμε ένα μεγάλο αρνητικό αριθμό εδώ. 133 00:07:35,800 --> 00:07:38,190 Πως το να συμβεί αυτό; 134 00:07:38,190 --> 00:07:40,040 Λοιπόν, αν κοιτάξουμε πίσω στο κώδικα, 135 00:07:40,040 --> 00:07:44,800 βλέπουμε ότι δεν μπορούμε να προετοιμαστεί, έτσι έχουμε μόνο σκουπίδια εκεί. 136 00:07:44,800 --> 00:07:46,820 Αυτό σίγουρα θα αποτινάξει τον υπολογισμό μας. 137 00:07:46,820 --> 00:07:49,930 >> Ευτυχώς, δεν έχουμε να αφήσει GDB να το διορθώσω αυτό. 138 00:07:49,930 --> 00:07:54,590 Μπορούμε να προετοιμαστεί εδώ και στερεώστε τον κωδικό αργότερα χρησιμοποιώντας την εντολή εκτύπωσης. 139 00:07:54,590 --> 00:07:59,500 Θα γίνει η προετοιμασία στο 1 από τα παραγοντικών από το μηδέν και 1 είναι δύο 1, 140 00:07:59,500 --> 00:08:03,940 και αν θέλουμε να προετοιμαστεί στο μηδέν, τότε θα είχαμε πάντα καταλήγουν με μηδέν ως αποτέλεσμα μας. 141 00:08:03,940 --> 00:08:08,370 Μπορείτε να ρυθμίσετε κάθε μεταβλητή με τον τρόπο αυτό, το οποίο είναι εξαιρετικά βολικό. 142 00:08:08,370 --> 00:08:10,920 Τώρα, ας συνεχίσουμε το πρόγραμμά μας. 143 00:08:10,920 --> 00:08:14,040 Ας βεβαιωθείτε ότι όλα είναι όπου υποτίθεται ότι είναι. 144 00:08:14,040 --> 00:08:19,090 Αριθμός θα πρέπει να είναι 4, i πρέπει να είναι 1, και παραγοντικό πρέπει να είναι 1 πάρα πολύ. 145 00:08:19,090 --> 00:08:23,990 Μπορούμε να συντόμευση της διαδικασίας αυτής και εκτύπωση όλων των τοπικών μεταβλητών μας 146 00:08:23,990 --> 00:08:26,440 με τα σούπερ-χρήσιμες πληροφορίες ντόπιοι εντολή, 147 00:08:26,440 --> 00:08:29,190 η οποία εκτυπώνει όλα-σε έκταση τοπικές μεταβλητές μας. 148 00:08:29,190 --> 00:08:31,980 Τέλος πάντων, αυτό μοιάζει με ό, τι είναι καλό να πάει. 149 00:08:31,980 --> 00:08:34,700 >> Ας κάνουμε άλλη μια προσπάθεια-γύρω από το βρόχο για να είναι σίγουροι. 150 00:08:34,700 --> 00:08:38,789 Εντάξει, τα πάντα φαίνεται μεγάλη. 151 00:08:38,789 --> 00:08:41,659 Τώρα μπορούμε να χρησιμοποιήσουμε την εντολή continue για να πάει μέχρι το τέλος. 152 00:08:41,659 --> 00:08:46,170 Γλυκό! 4 παραγοντικό εκτυπωθούν 24, όπως αναμενόταν. 153 00:08:46,170 --> 00:08:48,690 Τώρα μπορούμε να πάμε να το διορθώσω αυτό το κωδικό μας. 154 00:08:48,690 --> 00:08:53,710 Αντί να βγείτε από το GDB, θα χρησιμοποιήσουμε μια άλλη καρτέλα τερματικού να το κάνουμε αυτό. 155 00:08:53,710 --> 00:08:58,080 Πηγαίνοντας πίσω στην καρτέλα GDB μας, πρέπει τώρα να μεταγλωττίσετε εκτελέσιμο μας. 156 00:08:58,080 --> 00:09:03,180 Ένα από τα καλύτερα πράγματα για GDB είναι ότι δεν χρειάζεται να αφήσετε GDB να τρέξει κάνει. 157 00:09:03,180 --> 00:09:06,570 Έτσι ώστε να μην κρατήσει χτυπούν τα παλιά σημεία διακοπής, 158 00:09:06,570 --> 00:09:10,440 ας τους απενεργοποιήσετε με το, το μαντέψατε, απενεργοποιήστε την εντολή. 159 00:09:10,440 --> 00:09:13,320 Αυτό θα απενεργοποιήσει όλες breakpoints μας. 160 00:09:13,320 --> 00:09:18,180 Τώρα, μπορούμε να ξεκινήσουμε το πρόγραμμα με r και βεβαιωθείτε ότι όλα είναι εντάξει. 161 00:09:18,180 --> 00:09:21,300 Μοιάζει με ό, τι είναι καλό να πάει. 162 00:09:21,300 --> 00:09:24,410 Παραγοντικό από 4 εκτυπώνει 24, όπως νομίζαμε. 163 00:09:24,410 --> 00:09:28,830 GDB είναι ένα από τα πιο χρήσιμα εργαλεία που έχετε στην εργαλειοθήκη σας. 164 00:09:28,830 --> 00:09:31,970 >> Υπάρχουν ένα σωρό άλλα πράγματα που μπορείτε να κάνετε με το GDB, 165 00:09:31,970 --> 00:09:34,030 πολύ περισσότερο από ό, τι μπορείτε να κάνετε με απλές εκτυπώσεις. 166 00:09:34,030 --> 00:09:36,730 Την επόμενη φορά που το πρόγραμμά σας δεν κάνει ό, τι θέλετε, 167 00:09:36,730 --> 00:09:39,740 προσπαθήστε να εκτελέσετε GDB να καταλάβω τι συμβαίνει στο εσωτερικό. 168 00:09:39,740 --> 00:09:44,380 Με λίγη εξάσκηση, θα είστε σε θέση να τρυπάνι κάτω δεξιά στο σφάλμα σας σε κανέναν χρόνο. 169 00:09:44,380 --> 00:09:48,180 Το όνομά μου είναι Nate Hardison. Αυτό είναι CS50.