Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cs-142:debugging_guide [2015/01/07 16:12] (current)
ryancha created
Line 1: Line 1:
 +A few helpful hints on how to find a problem in your code.
 +==Common Problems==
 +*In helping with students, one of the most common problems I've encountered is the "​="​ vs the "​=="​ statements. ​ When comparing two things (exe: while(foo == false) ) make sure you have the "​=="​ sign rather than the "​="​. ​ The latter makes an assignment while the first checks a condition.
 +*Putting a ";"​ on the end of a statement.
 +*Making sure your file is read.
 +*A ";"​ after if() statements (this is wrong. Don't do this.)
 +*Forgetting a "​}"​ at the end of a loop or function.  ​
 +*Often, a "​subscript out of range" error appears. ​ This usually means that you are trying to access something that isn't there; i.e. trying to access the 6th element in a vector when there are only 5 elements; or trying to do a str.substr() call on a string that has less letters than you are asking for.  Check all of these instances in your program before you freak out. :)
 +*In the book, on pages XX - XXII there are lists of common errors and their page numbers.
  
 +==Test Cases==
 +* Use Test Cases! Visit the [[Test cases]] page to find out what kind of test cases will help you.  ​
 +#The point of a test case is to find out where your code breaks: create a situation where your code won't work and then fix it.  ​
 +#Once you fix all of the possible problems found in your test cases, you are ready to pass off.
 +==Finding The Problem==
 +===Breakpoints===
 +*Adding breakpoints. ​ Visit the [[Debugging in Visual Studio]] or [[Debugging in XCode]] pages for more directions how how to do this.
 +#​Breakpoints help you see what each value is at a given point in your code.
 +#Once you understand what each value is, you can determine where your code goes wrong.
 +
 +===Debug Statements===
 +*Debug or Print Statements:
 +#If for some reason you are not able to figure out where your code goes wrong with breakpoints,​ print out every value before you do anything with it.
 +Example:
 +<code cpp>
 +            string fname;
 +            string lname;
 +            int ss_num;
 +            double in_bal;
 + 
 +            in_file >> fname >> lname >> ss_num >> in_bal;
 + 
 +            string name = fname + " " + lname; // Making the name be first + last names
 +
 +            // here, I would make sure that my name is correct, so I would:
 +            cout << "Name at point 1: " << name << endl;
 +
 +            Account *tempAccount = new Account(name,​ ss_num, in_bal); // allocating memory and creating the acount
 + 
 +            // I want to check to see if the values stored in the object are correct:
 +            cout << "Name of tempAccount:​ " << tempAccount ->​get_name() << endl;
 +            cout << "​Balance of tempAccount:​ " << tempAccount->​get_bal() << endl;
 +
 +            bank.push_back(tempAccount);​ // Adding the pointer to the vector;
 + 
 +            //Here, let's check to see if anything got added to the vector:
 +            cout << "​Vector size after push_back: " << bank.size() << endl;
 +
 +</​code>​
 +
 +If the output from running this program prints
 + Name at point 1: Paul Bodily
 +and that's all, then the problem happened when I called the constructor. You can put print statements inside functions or class functions in the same way to make find problems in functions or class functions.
 +
 +==If All Else Fails==
 +* If you have looked at all of these situations and still can't find your problem, [http://​taohelpqueue.appspot.com/​requesthelp/​YPK364KMSA5U5QF55UCL8LQ3JHCS5C Ask a TA for help].
cs-142/debugging_guide.txt ยท Last modified: 2015/01/07 16:12 by ryancha
Back to top
CC Attribution-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0