Τεχνικές μεταγλώττισης - Αποσφαλμάτωση

Σχετικά έγγραφα
Εισαγωγή Βασικές εντολές Εκτέλεση βήµα-βήµα Εξέταση/Ανάθεση GDB-101. Νίκος Ντάρµος Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων

Gprof - Scalasca - VTune

Gprof - Scalasca - VTune

EPL475:Εργαστήριο 5, GDB

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διάλεξη 22η: Επιπλέον στοιχεία της C

Διάλεξη 17: Έλεγχος Λογισμικού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Writing kernels for fun and profit

Ενσωματωμένα Συστήματα

Προγραμματισμός Ι (ΗΥ120)

CS255 - Programming Lab

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Δομημένος Προγραμματισμός (ΤΛ1006)

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Εργαστήριο Αρ. 2

Μερικές άλλες χρήσιμες εντολές

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Αναπτύσσοντας developer tools στην Αpple. Αργύριος Κυρτζίδης Προπτυχιακός φοιτητής ΗΜΜΥ

Η γλώσσα προγραμματισμού C

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Μερικές άλλες χρήσιμες εντολές

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

ΘΕΜΑ PROJECT COMPILER FLAGS ΤΡΑΧΑΝΗΣ ΔΗΜΗΤΡΗΣ 6108 ΤΡΑΧΑΝΗΣ ΓΕΩΡΓΙΟΣ 5789

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

Προεπεξεργαστής της C. C Preprocessor. Προγραμματισμός II 1

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Ενσωματωμένα Συστήματα

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

make Προγραμματισμός II 1

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΕΦΑΛΑΙΟ 2. Περιγραφή της Κίνησης. 2.1 Κίνηση στο Επίπεδο

Μικρή Εισαγωγή στο wxdev-c++

Library, package και subprograms

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Παράλληλη Επεξεργασία

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

ΕΡΓΑΣΤΗΡΙΟ 8: Πολυδιάστατοι Πίνακες και Δυναμική Δέσμευση Μνήμης

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Δομημένος Προγραμματισμός

Προγραμματισμός Ι (ΗΥ120)

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++

Εισαγωγή στον Προγραμματισμό

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Εισαγωγή στον Προγραμματισμό

Διάλεξη 17: Έλεγχος Λογισµικού

Δυναμική μνήμη με πίνακες και λίστες

ΔΟΜΗΜΕΝΟΣ ΟΠΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΠAΡΑΘΥΡΙΚΟ ΠΕΡΙΒΑΛΛΟΝ με τη Γλώσσα Προγραμματισμού VISUAL BASIC (1 ο ΕΠΙΠΕΔΟ)

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

3 &4. Εισαγωγήστη C Ιωάννης Κατάκης

εφαρμογών Συμπεριφορά απόδοσης εφαρμογών Benchmarks, Profiling GRNET ntell [at] grnet.gr Χρονοεπίδοση και αξιολόγηση απόδοσης εφαρμογών

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Μεταφραστής (Compiler)

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΚΕΦΑΛΑΙΟ 4ο. Α. Το περιβάλλον της Microsoft Fortran Powerstation

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Computing. Νοέμβριος Έκδοση 1.0

Προεπεξεργαστής C. Προγραμματισμός Ι 1

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Εισαγωγή στη Fortran. Μάθημα 3 ο. Ελευθερία Λιούκα

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Δρ. Ιωάννης Λυχναρόπουλος Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας

SPEEDO AQUABEAT. Specially Designed for Aquatic Athletes and Active People

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #0

Συστήµατα και Αλγόριθµοι Πολυµέσων

Οδηγίες Εγκατάστασης και χρήσης προγραμμάτων για την γλώσσα C

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

Κεφάλαιο 1 Εισαγωγή στη C

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

εφαρμογών Συμπεριφορά απόδοσης εφαρμογών Benchmarks, Profiling GRNET ntell [at] grnet.gr Χρονοεπίδοση και αξιολόγηση απόδοσης εφαρμογών

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών. Οδηγίες εργαστηρίου. Συστήματα Παράλληλης Επεξεργασίας 9 ο Εξάμηνο

Transcript:

- Τεχνικές ς Τεχνικές μεταγλώττισης - Νίκος Νικολουτσάκος ΕΔΕΤ nikoloutsa [at] grnet.gr http://doc.aris.grnet.gr/development/ Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 1/45

Περιεχόμενα - Τεχνικές ς 1 Τεχνικές ς 2 Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 2/45

- Τεχνικές ς Κειμενογράφοι : vi, vim, nano Προγραμματισμός: C, C++, Fortran Script: perl, bash, Octave Μετταγλωτιστές: INTEL, GCC, PGI Παραλληλία: Intel MPI, OpenMPI Make: make, cmake : gdb, gdb-ia, pgdbg, ddd Profilers: gprof, pgprof, VTune, Scalasca, mpip Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 3/45

- Τεχνικές ς Διαθέσιμοι Language GNU INTEL PGI File Extension C gcc icc pgcc.c C++ g++ icpc pgc++.cpp.cc.c.cxx Fortran gfortran ifort pgfortran.f.for.ftn.f90.fpp MPI flavor module execute Intel MPI intelmpi srun OpenMPI openmi srun Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 4/45

Intelmpi I - Τεχνικές ς Launcher srun Language C C++ Fortran wrapper mpiicc mpiicpc mpifort Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 5/45

Intelmpi II - (gnu) mpicc -show Τεχνικές ς (intel) mpiicc -show Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 6/45

OpenMPI I - Τεχνικές ς Launcher srun Language C C++ Fortran wrapper mpicc mpicxx mpifort (mpif90 deprecated) Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 7/45

OpenMPI II - intel module load openmpi/1.8.7/intel Τεχνικές ς mpicc -show Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 8/45

OpenMPI III - gnu module load openmpi/1.8.7/gnu Τεχνικές ς mpicc -show Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 9/45

- Τεχνικές ς Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 10/45

- Τεχνικές ς -c Παραγωγή object αρχείων, χωρίς ομως σύνδεση (linking) -o Όνομα εκτελέσιμου -g Παράγει πληροφορίες αποσφαλμάτωσης. -D[name] Ορίζει το macro στον προεπεξεργαστή. -I[dir] Αναζητεί αρχεία στον κατάλογο dir κατά τη μεταγλώττιση. -l[lib] Σύνδεση με βιβλιοθήκη lib. -static Υποχρεώνει στατική σύνδεση. -L[dir] Αναζητεί αρχεία βιβλιοθηκών στον κατάλογο dir κατά τη σύνδεση. -fpic Παράγει position-independent. -version,-v Προβάλει την έκδοση του μεταγλωττιστή. -help,-h Πληροφορίες βοήθειας. -std= Συμμόρφωση με πρότυπο standard. Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 11/45

- Τεχνικές ς include dir gcc -I/path/to/include main.c gcc -I$MYPATH main.c Find the paths module show fftw/2.1.5 Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 12/45

- gcc main.c -lfoo Τεχνικές ς gcc -L/path/to/lib main.c -lfoo echo $LD_LIBRARY_PATH Runtime libraries ldd a.out Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 13/45

- Τεχνικές ς Επλογές του μεταγλωττιστή -O0 Απενεργοποίηση βελτιστοποιήσεων -O1 Βελτιστοποιήσεις ως προς μέγεθος -O2 Βελτιστοποίηση ως προς ταχύτητα -O3 Πλήρες επίπεδο -Ofast Πιο επιθετική βελτιστοποίηση Intel Reference The /O3 (-O3) option is particularly recommended for applications that have loops that do many floating-point calculations or process large data sets. These aggressive optimizations may occasionally slow down other types of applications compared to /O2 (-O2). Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 14/45

- Τεχνικές ς gcc help=optimizers icc help opt Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 15/45

- gcc -Q -O3 help=optimizers icc help advanced Τεχνικές ς Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 16/45

- Τεχνικές ς για συγκεκριμένο επεξεργαστή -march=native Βελτιστοποίηση για συγκεκριμένο επεξεργαστή -mtune=native Intel icc -xhost gcc -c -Q -march=native help=target -m[target] Enable use of instructions sets, -mavx,... Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 17/45

- Τεχνικές ς Επιλογή GNU -O[0-3] -Os -Ofast -mtune,-march=native -funroll-loops -finline-functions -fstrict-aliasing Επιλογή INTEL -O[0-3] -Os -fast -xhost -unroll/-unroll-agressive -ip, ip0 -fno-alias Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 18/45

- Τεχνικές ς Loop Unrolling unrolling inner loops hides floating point latency original for (int x=0; x < 100; x++) { func(x); } optimized for (int x = 0; x < 100; x+=5) { func(x); func(x+1); func(x+2); func(x+3); func(x+4); } Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 19/45

- Τεχνικές ς Loop Colapsing original int a[100][300]; for (int i = 0; i < 300; i++) for (int j = 0; j < 100; j++) a[j][i] = 0; optimized int a[100][300]; int *p = &a[0][0]; for (int i = 0; i < 30000; i++) *p++ = 0; Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 20/45

Inline functions - Τεχνικές ς original int func(int &x,int &y) { return 4*x+3*y; } int main(){ int x=4, y=3; int b=fun(x,y) } optimized int main(){ int x=4,y=3; int b= 4*x+3*y; } inline keyword suggests (but does not require) MACRO #define FUN(x,y) 4*x+3*y increase code space Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 21/45

- Τεχνικές ς Branch Elimination if ( x < x1 ) { a = a0 + a1; } else if ( x < x2 ) { a = a0 - a1; } else if ( x < x3 ) { a = a0 * a1; } else { a = a0; } static branch elimination compute all cases and conditions, then pick the correct replace with switch statements, jumbe tables branch re-alignment Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 22/45

- Τεχνικές ς original Loop Fusion int x[100], y[100]; for (int i = 0; i < 100; i++) x[i] = 1; for (int i = 0; i < 100; i++) y[i] = 2; optimized int x[100], y[100]; for (int i = 0; i < 100; i++) { x[i] = 1; y[i] = 2; } Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 23/45

- Τεχνικές ς original Loop Peeling int p = 10; for (int i=0; i<10; ++i) { y[i] = x[i] + x[p]; p = i; } optimized y[0] = x[0] + x[10]; for (int i=1; i<10; ++i) { y[i] = x[i] + x[i-1]; } Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 24/45

Memory Tuning I - Τεχνικές ς Cache reuse Fortran (column-wise) Real*8 :: a(m,n), b(m,n), c(m,n)... do i=1,n do j=1,m a(j,i)=b(j,i)+c(j,i) end do end do C (row-wise) double a[m][n], b[m][n], c[m][n];... for (i=0;i <m;i++){ for (j=0;j <n;j++){ a[i][j]=b[i][j]+c[i][j]; } } Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 25/45

Memory Tuning II - Prefetching (predict next cache line) Τεχνικές ς 2 stream do i=1,n s=s+x(i)*y(i) end do dotp=s 4 stream do i=1,n/2 s0=s0+x(i)*y(i) s1=s1+x(i+n/2)*y(i+n/2) end do dotp=s0+s1 6 stream do i=1,n/3 s0=s0+x(i)*y(i) s1=s1+x(i+n/3)*y(i+n/3) s2=s2+x(i+2*n/3)*y(i+2* n/3) end do do i=3*(n/3)+1,n s0=s0+x(i)*y(i) end do dotp=s0+s1+s2 Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 26/45

Memory Tuning III - Τεχνικές ς cache blocking Real*8 a(n,n), b(n,n), c(n,n) do ii=1,n,nb! < nb is blocking factor do jj=1,n,nb do kk=1,n,nb do i=ii,min(n,ii+nb-1) do j=jj,min(n,jj+nb-1) do k=kk,min(n,kk+nb-1) c(i,j)=c(i,j)+a(j,k)*b(k,i) end do end do end do end do end do end do Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 27/45

- Τεχνικές ς gdb GNU Debugger αποσφαλμάτωση, έλεγχος λαθών: segmantation faults, floating point exception κλπ http://www.gnu.org/software/gdb/ Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 28/45

- Τεχνικές ς gcc [flags] <source file> -o <output file> -Wall, -Wextra: Ενεργοποιεί προειδοποίηση πιθανών σφάλμα -Werror: Μετατρέπει προειδοποίηση σε σφάλμα. -Wfatal-errors: Τερματίζει μεταγλώττιση μετά το πρώτο σφάλμα. Debug info gcc [flags] -g <source file> -o <output file> -g: Παράγει πληροφορία αποσφαλμάτωσης -ggdb: Παράγει πληροφορία αποσφαλμάτωσης για Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 29/45

- Command gdb <prog name> or gdb (gdb) Τεχνικές ς (gdb) file <prog name> Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 30/45

- (gdb) help <command> Τεχνικές ς Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 31/45

- (gdb) help run Τεχνικές ς Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 32/45

Εκτέλεση - (gdb) run Τεχνικές ς Εκτέλεση του μέχρι να κρασάρει Προσθήκη breakpoints Έλεγχος δεδομένων Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 33/45

- (gdb) break main.c:6 (gdb) break my_function Τεχνικές ς (gdb) continue (gdb) step (gdb) next (gdb) print <var> (gdb) watch <var> (gdb) list Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 34/45

Παράδειγμα - Τεχνικές ς # i n c l u d e < s t d i o. h> # i n c l u d e < s t d l i b. h> i n t mydiv ( i n t, i n t ) ; i n t main ( void ) { i n t res, x = 5, y ; f o r ( y = 1; y < 10; y++) { res = mydiv ( x, y ) ; p r i n t f ( %d,%d,%d \ n, x, y, res ) ; } r e t u r n 0; } i n t mydiv ( i n t x, i n t y ) { r e t u r n 1 / ( x y ) ; } PROGRAM main INTEGER : : mydiv INTEGER : : res, x = 5, y DO y = 1, 10 res = mydiv ( x, y ) WRITE ( *, * ) x, y, res END DO END PROGRAM FUNCTION mydiv ( x, y ) INTEGER, INTENT ( IN ) : : x, y mydiv = 1 / ( x y ) RETURN END FUNCTION mydiv Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 35/45

- Τεχνικές ς gcc -g divcrash.c gdb./a.out gfortran -g divcras.f90 gdb./a.out (gdb) run Program received signal SIGFPE, Arithmetic exception. 0x0000000000400595 in mydiv () Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 36/45

I - (gdb) shell ls -l Τεχνικές ς (gdb) attach pid (gdb) shell ps -eo pid,comm Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 37/45

II - (gdb) attach 22523 Τεχνικές ς (gdb) backtrace Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 38/45

- Τεχνικές ς (gdb) core <core> snapshot (gdb) generate-core-file Valgrid: memory leaks Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 39/45

- Τεχνικές ς gdb-ia Intel Debugger αποσφαλμάτωση, έλεγχος λαθών: segmantation faults κλπ module intel Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 40/45

- Τεχνικές ς ddd Data Display Debugger Γραφικό περιβάλλον αποσφαλμάτωση, έλεγχος λαθών: segmantation faults κλπ http://www.gnu.org/software/ddd/ gui vs gdb tui Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 41/45

- ddd <prog name> Τεχνικές ς Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 42/45

- Τεχνικές ς Line: Right Click Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 43/45

- Program -> Run Τεχνικές ς Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 44/45

- Τεχνικές ς GCC, the GNU Compiler Collection Options That Control Optimization Intel Developer Zone, Intel 64 and IA-32 Architectures Optimization Reference Manual, 2014 PRACE Best Practice Guide - Generic x86 : The GNU Project Debugger Debugging with gdb - Data Display Debugger Debugging with ddd Εκπαιδευτικό Σεμινάριο ARIS Αθήνα, 14-16 Σεπ. 2015 45/45