Presentation is loading. Please wait.

Presentation is loading. Please wait.

COP 3530 Spring2012 Data Structures & Algorithms Discussion Session Week 2.

Similar presentations


Presentation on theme: "COP 3530 Spring2012 Data Structures & Algorithms Discussion Session Week 2."— Presentation transcript:

1 COP 3530 Spring2012 Data Structures & Algorithms Discussion Session Week 2

2 Outline TA contact g++ makefile debug

3 About me

4 TA contact Tao Li PhD student at CISE tali@cise.ufl.edu http://www.cise.ufl.edu/~tali Office Hour This Week: Thursday 9 th period at E309

5 Separate code header file #ifndef _my_stack #define _my_stack int add(int x, int y); // function prototype for add.h #endif.cpp file int add(int x, int y) { return x + y; } Header guards Because header files can include other header files, it is possible to end up in the situation where a header file gets included multiple times.

6 Compilation: g++ 1.Compiling, in which C++ code is translated into assembly; 2.Assembling, in which assembly is translated into machine language; and 3.Linking, in which calls to functions outside the main file are linked to their definitions. //////////////////////////////////////////////// g++ -c MyStack.cpp g++ -c main.cpp g++ -o stack main.o MyStack.o or //////////////////////////////////////////////// g++ -o stack main.cpp MyStack.cpp -o program_name // compiling and linking to generate program_name, default "a.out" -c // compiling but no linking -g // for debugging, but runs slow

7 make and makefile make is a system designed to create programs from large source code trees and to maximize the efficiency of doing so. To that effect, make uses a file in each directory called a Makefile. This file contains instructions for make on how to build your program and when. target: dependencies instructions example Note: Build several independent targets in order, below is sample makefile ========================================================== all: target1 target2 target3 target1: dependencies instructions target2:...

8 Stack A stack is a last in, first out (LIFO) data structure

9 Main.cpp & Input file if(x == 1) { fscanf(fp1, “ %d”, &y); myStack.Push(y); } else { myStack.Top(y); printf(“%d\n”, y); myStack.Pop(); } 1 1 2 1 3 1 4 1 5 0

10 Run./program_name For example:./stack

11 GNU debugger -- gdb A symbolic debugger is a program that aids programmers in finding logical errors, by allowing them to execute their program in a controlled manner. 1.Enable symbol table 2.Debug the program g++ -g -o stack stack.cpp gdb stack

12 Use gdb Starting Execution of Program (gdb) run (or r) Quitting gdb (gdb) quit (or q or Ctrl-D) Resuming Execution at a Breakpoint Once you have suspended execution at a particular statement, you can resume execution in several ways: continue (or c) Resumes execution and continues until the next breakpoint or until execution is completed. next (or n) next will execute a function in the current statement in its entirety.

13 Setting Breakpoints & Print Setting a breakpoint permits you to mark a particular line in your program (called a breakpoint) so that when execution reaches that line, program execution will be suspended, allowing you to enter a gdb command. break function : Set a breakpoint at entry to function function. break filename:linenum :Set a breakpoint at line linenum in source file filename. print expression (or p expression)Displays the value of the expression (usually a variable) once → at the current point of execution.

14 Example: tst.cpp 1. #include “stdio.h” 2. int summation(int n) { 3. int sum = 0, i; 4. for(i = 1; i<n; i++) { 5. sum += i; 6. } 7. return sum; 8. } 9. int main() { 10. printf(“Summation is %d\n”, summation(100)); 11. return 0; 12. }

15 Example g++ tst.cpp -o tst./tst Output: Summation is 4950 Actually: 1+2+…+100 = (1+100) * 100 / 2 = 5050 Where is the bug?

16 Tip: Reduce the input size Change printf(“Summation is %d\n”, summation(100)); To: printf(“Summation is %d\n”, summation(5)); Expected result: 1+2+3+4+5 = 15 g++ tst.cpp -o tst./tst Output: Summation is 10

17 gdb Compile: g++ -g tst.cpp -o tst Run gdb: gdb tst List code: l Breakpoint: break 5 Run to bkpnt: r Next step : n Print value: p (variable) Finish: finish Quit: q

18 The power of PRINTF Add: printf(“i=%d, sum=%d\n”, i, sum); Output: i = 1, sum = 1 i = 2, sum = 3 i = 3, sum = 6 i = 4, sum = 10 Summation is 10


Download ppt "COP 3530 Spring2012 Data Structures & Algorithms Discussion Session Week 2."

Similar presentations


Ads by Google